标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 181 Accepted Submission(s): 60
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <string> 7 #include <vector> 8 #include <set> 9 #include <map> 10 #include <stack> 11 #include <queue> 12 using namespace std; 13 const int INF=0x7fffffff; 14 const double EXP=1E-8; 15 const int MS=85; 16 int a[MS]; 17 int cnt,l,n; 18 19 int dfs(int cur) 20 { 21 if(cnt++==n) 22 { 23 for(int i=0;i<cur;i++) 24 { 25 if(i&&(i%64)==0) //第k*64+1个的话,需要换行 26 printf("\n"); 27 else if(i&&i%4==0) //第k*4+1个的话,需要空格 28 printf(" "); 29 printf("%c",a[i]+‘A‘); 30 } 31 printf("\n%d\n",cur); 32 return 0; //为了得到了答案立即退出方便 33 } 34 else 35 { 36 for(int i=0;i<l;i++) 37 { 38 a[cur]=i; 39 int ok=1; 40 for(int j=1;j*2<=cur+1;j++) 41 { 42 int is=1; 43 for(int k=0;k<j;k++) 44 if(a[cur-k]!=a[cur-j-k]) 45 { 46 is=0; 47 break; 48 } 49 if(is) 50 { 51 ok=0; 52 break; 53 } 54 } 55 if(ok) 56 { 57 if(!dfs(cur+1)) 58 return 0; 59 } 60 } 61 } 62 return 1; 63 } 64 65 int main() 66 { 67 while(cin>>n>>l&&(n+l)) 68 { 69 cnt=0; 70 dfs(0); 71 } 72 }
标签:
原文地址:http://www.cnblogs.com/767355675hutaishi/p/4290894.html