标签:
学习的紫书的回溯,理解起来还是好困难的说啊= =
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<map> 8 #include<set> 9 #include<queue> 10 #include<algorithm> 11 using namespace std; 12 13 typedef long long LL; 14 const int INF = (1<<30)-1; 15 const int mod=1000000007; 16 const int maxn=100005; 17 18 char s[maxn]; 19 int n,L,cnt,sum; 20 21 int dfs(int cur){ 22 if(cnt++==n){ 23 int tmp=0; 24 for(int i=0;i<cur;i++) { 25 if(i%64==0&&i) printf("\n"); 26 else if(i%4==0&&i) printf(" "); 27 printf("%c",‘A‘+s[i]); 28 } 29 printf("\n"); 30 printf("%d\n",cur); 31 return 0; 32 } 33 34 35 for(int i=0;i<L;i++){ 36 s[cur]=i; 37 int ok=1; 38 for(int j=1;j*2<=cur+1;j++){ 39 int equal=1; 40 for(int k=0;k<j;k++) 41 if(s[cur-k]!=s[cur-k-j]){equal=0;break;} 42 if(equal){ok=0;break;}//后一半等于前一半,不符合困难的串的条件 43 } 44 if(ok) if(!dfs(cur+1)) return 0; 45 } 46 return 1; 47 } 48 49 50 int main(){ 51 while(scanf("%d %d",&n,&L)!=EOF&&n&&L){ 52 cnt=0; 53 dfs(0); 54 } 55 return 0; 56 }
加油啊 go---go---go-
标签:
原文地址:http://www.cnblogs.com/wuyuewoniu/p/4445454.html