题解 | #密码截取#
密码截取
http://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
#include <stdlib.h>
#include <string.h>
int main(void)
{
char str[4096];
scanf("%s", str);
int len = strlen(str);
char dp[len][len];
int maxlen = 1;
for(int i=0; i<len; i++){
for(int j=0; j<=i; j++){
if(i == j)//同一个数置1
dp[j][i] = 1;
else if(i-j == 1) //两元素相邻,判断是否是回文子串
dp[j][i] = (str[i] == str[j]);
else
dp[j][i] = (str[i] == str[j] && dp[j + 1][i - 1]);//两元素相同不相邻,判断中间的子串是否是回文子串
if(dp[j][i] && i - j + 1 > maxlen) //是回文子串,判断取最大
maxlen = i - j + 1;
}
}
printf("%d",maxlen);
return 0;
}