困难串

 1 #include<stdio.h>
 2 
 3 int n,l;
 4 char s[100];
 5 
 6 int dfs(int cur)
 7 {
 8     int i,j,ok,equal,k;
 9     if(cur==n)
10     {
11         for(i=0;i<n;i++)
12             printf("%c",'A'+s[i]);
13         printf("\n");
14         return 0;
15     }
16     for(i=0;i<l;i++)
17     {
18         s[cur]=i;
19         ok=1;
20         for(j=1;j*2<=cur+1;j++)
21         {
22             equal=1;
23             for(k=0;k<j;k++)
24                 if(s[cur-k]!=s[cur-k-j]) 
25                 {
26                     equal=0;
27                     break;
28                 }
29                 if(equal)
30                 {
31                     ok=0;break;
32                 }
33         }
34         if(ok)
35             if(!dfs(cur+1))
36                 return 0;                
37         }
38     return 1;
39 }
40 
41     
42 int main()
43 {
44     while(scanf("%d%d",&n,&l)!=EOF)
45     {
46         dfs(0);
47     }
48     return 0;
49 }
原文地址:https://www.cnblogs.com/xiaofanke/p/2998799.html