zoukankan      html  css  js  c++  java
  • 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("
    ");
     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("
    ");
    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("
    ");
    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("
    ");
    74     }
    75 }
    View Code
  • 相关阅读:
    MVC3 中上传大文件
    js 将十进制转换为八位二进制数组
    nodejs 读取并处理二进制文件
    freeswitch源码编译 ./configure 遇到的问题
    通道设置静态坐席
    呼叫中心静态座席的配置
    ECharts报表
    combotree
    openlayer PanZoom
    为什么要始终使用PreparedStatement代替Statement?
  • 原文地址:https://www.cnblogs.com/skykill/p/3321758.html
Copyright © 2011-2022 走看看