hdu4731 Minimum palindrome (找规律)
这道题找下规律,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 */
正解!!!
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <math.h> 5 #include<vector> 6 #include<time.h> 7 #include<algorithm> 8 using namespace std; 9 int cnt[30]; 10 char s[20][20],add[10][20]; 11 void pre() 12 { 13 s[1][0]='a';s[1][1]=0; 14 s[2][0]='a';s[2][1]='b';s[2][2]=0; 15 s[3][0]='a';s[3][1]='a';s[3][2]='b';s[3][3]=0; 16 s[4][0]='a';s[4][1]='a';s[4][2]='b';s[4][3]='b';s[4][4]=0; 17 s[5][0]='a';s[5][1]='a';s[5][2]='a';s[5][3]='b';s[5][4]='a';s[5][5]=0; 18 s[6][0]='a';s[6][1]='a';s[6][2]='a';s[6][3]='b';s[6][4]='a';s[6][5]='b';s[6][6]=0; 19 s[7][0]='a';s[7][1]='a';s[7][2]='a';s[7][3]='b';s[7][4]='a';s[7][5]='b';s[7][6]='b';s[7][7]=0; 20 s[8][0]='a';s[8][1]='a';s[8][2]='a';s[8][3]='b';s[8][4]='a';s[8][5]='b';s[8][6]='b';s[8][7]='b';s[8][8]=0; 21 s[9][0]='a';s[9][1]='a';s[9][2]='a';s[9][3]='a';s[9][4]='b';s[9][5]='a';s[9][6]='b';s[9][7]='b';s[9][8]='a';s[9][9]=0; 22 23 add[1][0]='a';add[1][1]=0; 24 add[2][0]='a';add[2][1]='a';add[2][2]=0; 25 add[3][0]='a';add[3][1]='a';add[3][2]='a';add[3][3]=0; 26 add[4][0]='a';add[4][1]='b';add[4][2]='a';add[4][3]='b';add[4][4]=0; 27 add[5][0]='a';add[5][1]='b';add[5][2]='a';add[5][3]='b';add[5][4]='b';add[5][5]=0; 28 add[6][0]='a';add[6][1]='b';add[6][2]='a';add[6][3]='b';add[6][4]='b';add[6][5]='a';add[6][6]=0; 29 } 30 int main() 31 { 32 pre(); 33 int i,j; 34 int T; 35 int ca=0; 36 scanf("%d",&T); 37 while(T--) 38 { 39 ca++; 40 int m,n; 41 scanf("%d%d",&m,&n); 42 printf("Case #%d: ",ca); 43 if(m==1) 44 { 45 for(i=1;i<=n;i++) 46 printf("a"); 47 printf("\n"); 48 continue; 49 } 50 if(m==2) 51 { 52 if(n<=9)printf("%s",s[n]); 53 else 54 { 55 printf("%s",s[9]); 56 n=n-9; 57 for(i=1;i<=n/6;i++) 58 { 59 printf("%s",add[6]); 60 } 61 if(n%6)printf("%s",add[n%6]); 62 } 63 printf("\n"); 64 continue; 65 } 66 char tmp='a'; 67 for(i=1;i<=n;i++) 68 { 69 printf("%c",tmp); 70 if(i%3==0)tmp='a'; 71 else tmp++; 72 } 73 printf("\n"); 74 } 75 }