连接

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 */
View Code

 

 

正解!!!

 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 }
View Code

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2013-09-14 21:04  朱群喜_QQ囍_海疯习习  阅读(275)  评论(0编辑  收藏  举报
Map