设为首页 加入收藏

TOP

HDU4850 构造一个长度为n的串,要求任意长度为4的子串不相同
2015-07-20 18:03:21 来源: 作者: 【 】 浏览:3
Tags:HDU4850 构造 一个 长度 的串 要求 任意 相同

n《=50W。(使用26个字母)

构造方法:26个,最多构造出26^4种不同的串,长度最长是26^4+3,大于是输出“impossble”,用四维数组判重。每次向前构造一位(先从上一位字符后一个开始),这样,可以构造出26^4-25种,打印出来发现(bbbb~zzzz),构造不出来,于是,学习了他人方法,把这些放在最前面,再重复上述方法构造即可(以后都可以用这种向前推一法构造)。

PS:从中额外学得:若用string 的s=s+char,拼接,速度很慢,用char s[],然后s[size++]=char,快得多。输出有点意思,直接输出n个即可,末地址起。

#include
  
     //46MS
#include
   
     #include
    
      using namespace std; int mark[26][26][26][26]; char s[480000]; int size=0; int main() { int n; for(int i=0;i<26;i++) { s[size++]=char(i+'a'); s[size++]=char(i+'a'); s[size++]=char(i+'a'); s[size++]=char(i+'a'); } for(int i=0;i
     
      >n) { if(n>26*26*26*26+3) { cout<<"Impossible"<
      
       

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇poj2155--Matrix(二维树状数组) 下一篇HDU 1525 Euclid's Game

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: