题解 | #密码截取#

密码截取

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;
}
全部评论

相关推荐

04-17 18:32
门头沟学院 Java
野猪不是猪🐗:他跟你一个学校,你要是进来之后待遇比他好,他受得了?
点赞 评论 收藏
分享
04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务