这道题找下规律,3个字母或者以上的时候就用abcabcabc....循环即可。
一个字母时,就是aaaaa.....;
当只有2个字母时!
s[1][]=a";
s[2][]="ab";
s[3][]="aab";
s[4][]="aabb";
s[5][]="aaaba";
s[6][]=""aaabab";
s[7][]=""aaababb";
s[8][]=""aaababbb";
s[9][]=""aaaababba";
下面是循环的字符串!!!!
add[1][]="a";
add[2][]="aa";
add[3][]="aaa";
add[4][]="aaaa";
add[5][]="aabab";
add[6][]="aababb";
打表程序!!!
1 下面是打表程序!!!! 2 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <string.h> 6 #include <math.h> 7 #include<vector> 8 #include<time.h> 9 #include<algorithm> 10 using namespace std; 11 int dp[200000]; 12 int pan(int s[],int n) 13 { 14 int i,j,k; 15 int ans=1; 16 for(i=2;i<=n;i++) 17 { 18 int flag=0; 19 for(j=1;j<=n-i+1;j++) 20 { 21 int x,y; 22 x=j;y=i+j-1; 23 while(x<=y) 24 { 25 if(s[x]!=s[y])break; 26 x++;y--; 27 } 28 if(x>y)flag=1; 29 } 30 if(flag)ans=i; 31 } 32 return ans; 33 } 34 int main() 35 { 36 int i,j; 37 int n; 38 int s[4444]; 39 while(~scanf("%d",&n)) 40 { 41 int ans,L; 42 L=999; 43 for(i=(1<<n)-1;i>=0;i--) 44 { 45 int tmp=i; 46 for(j=n;j>=1;j--) 47 { 48 s[j]=tmp%2; 49 tmp/=2; 50 } 51 int tt=pan(s,n); 52 if(tt<=L)L=tt,ans=i; 53 } 54 int tmp=ans; 55 for(j=n;j>=1;j--) 56 { 57 s[j]=tmp%2; 58 tmp/=2; 59 } 60 for(i=1;i<=n;i++) 61 if(s[i])printf("b"); 62 else printf("a"); 63 printf("\n"); 64 } 65 } 66 /* 67 2 68 ab 69 3 70 aab 71 4 72 aabb 73 5 74 aaaba 75 6 76 aaabab 77 7 78 aaababb 79 8 80 aaababbb 81 9 82 aaaababba 83 10 84 aaaababba a 85 11 86 aaaababba aa 87 12 88 aaaababba aaa 89 13 90 aaaababba abab 91 14 92 aaaababba ababb 93 15 94 aaaababba ababba 95 16 96 aaaababba ababba a 97 17 98 aaaababba ababba aa 99 18 100 aaaababba ababba aaa 101 19 102 aaaababba ababba abab 103 20 104 aaaababba ababba ababb 105 21 106 aaaababba ababba ababba 107 */