回文锁 BNUOJ 12883
题意:此题题意是,给你一个字符串,问你最少需要输入多少个字符,使得原来的串变成回文串。
解题思路:之前第一遍遍写的思路是遍历可能的中间结点,写着麻烦。
后来换了个思路。即判断第i位到串末尾是否是一个回文串,i从0-strlen(str)-1进行遍历。
特别注意:突然就不知道为什么T了好多次。发现我调用了很多次strlen(str)这个函数。仅调用一次,用len记录strlen(str)以后就不再T了。记住以后不再犯了。
又试了一下用string类里面的.size()也可以过……
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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