码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #286 (Div. 2)

时间:2015-04-02 06:34:24      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

A题:

给出一个长度为n的字符串,操作:在这个字符串的任意位置(前后也可以)插入一个字符,使之成为一个回文串,

而且,即使这个字符串本身就是回文串,你也必须插入一个字符。

若无法达成目的,输出"NA"

由于题意n<=10,所以直接暴力。

1.看本身是否是回文串

2.若本身不是,则暴力:

 从前到后每次去掉这个字符串的一个字符,看新形成的字符串是否为回文串,若是则在这个去掉的字符的相应位置插入这个字符,还是回文串,达成目的。

若不是,则无法达成目的,输出“NA”

我这段代码的问题:s下标从0开始,新形成的字符串下标从1开始,导致很紊乱。本来想改的,好困啊,睡觉了。

技术分享
 1 #include<cstdio>
 2 #include<cstring>
 3 char s[11];
 4 int main()
 5 {
 6     while(scanf("%s",&s)!=EOF){
 7         int len=strlen(s);
 8         bool cnt=true;
 9         for(int i=1;i<=len/2;i++)
10             if(s[i-1]!=s[len-i]){
11                 cnt=false;
12                 break;
13             }
14         if(cnt){
15             for(int i=1;i<=len/2;i++)
16                 printf("%c",s[i-1]);
17             printf("%c",s[len/2]);
18             for(int i=len/2+1;i<=len;i++)
19                 printf("%c",s[i-1]);
20             printf("\n");
21             continue;
22         }
23         for(int i=1;i<=len;i++){
24             char t[11];
25             int j=0,k=1;
26             while(j<len){
27                 if(j==i-1)
28                     j++;
29                 else{
30                     t[k++]=s[j];
31                     j++;
32                 }
33             }
34             bool flag=true;
35             for(int l=1;l<k;l++){
36                 if(t[l]!=t[k-l]){
37                     flag=false;
38                     break;
39                 }
40             }
41             if(flag){
42                 i--;
43                 if(i<=len/2){
44                     for(int l=0;l<len-i;l++)
45                         printf("%c",s[l]);
46                     printf("%c",s[i]);
47                     for(int l=len-i;l<len;l++)
48                         printf("%c",s[l]);
49                     printf("\n");
50                     goto loop;
51                 }
52                 else{
53                     for(int l=0;l<len-i-1;l++)
54                         printf("%c",s[l]);
55                     printf("%c",s[i]);
56                     for(int l=len-i-1;l<len;l++)
57                         printf("%c",s[l]);
58                     printf("\n");
59                     goto loop;
60                 }
61             }
62         }
63         printf("NA\n");
64         loop: ;
65     }
66     return 0;
67 }
A题

 

Codeforces Round #286 (Div. 2)

标签:

原文地址:http://www.cnblogs.com/-maybe/p/4385781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!