回文锁 BNUOJ 12883

题意:此题题意是,给你一个字符串,问你最少需要输入多少个字符,使得原来的串变成回文串。

解题思路:之前第一遍遍写的思路是遍历可能的中间结点,写着麻烦。

     后来换了个思路。即判断第i位到串末尾是否是一个回文串,i从0-strlen(str)-1进行遍历。

特别注意:突然就不知道为什么T了好多次。发现我调用了很多次strlen(str)这个函数。仅调用一次,用len记录strlen(str)以后就不再T了。记住以后不再犯了。

     又试了一下用string类里面的.size()也可以过……

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 char str[1000010];
 4 int len;
 5 bool pan(int i){
 6     int j;
 7     for(j=len-1;i<j;i++,j--){
 8         if(str[i]!=str[j])return false;
 9     }
10     return true;
11 }
12 int main(){
13     int i,j,n;
14     while(scanf("%s",&str)!=EOF){
15         len=strlen(str);
16         for(i=0;i<len-1;++i)
17             if(pan(i))
18                 break;
19          printf("%d\n",i);
20     }
21     return 0;
22 }

                                              Q

posted on 2012-08-02 17:05  miao11621  阅读(134)  评论(0编辑  收藏  举报

导航