题解 | #密码截取#

密码截取

http://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

#include<stdio.h>

int f_max(int a, int b){ return a>b?a:b; }

int main(){ char data[2500]; scanf("%s", data); int lenth=0; for(; data[lenth] != '\0'; lenth++); intdp=(int)malloc(sizeof(int)lenth); for(int i=0; i<lenth; i++){ dp[i]=(int)malloc(sizeof(int)*lenth); for(int x=0; x<lenth; x++)dp[i][x]=1; } int mmax=1; for(int i=lenth-1; i>=0; i--){//i是左边界 for(int j=0; j<lenth; j++){ if(i>j){ dp[i][j]=0; } else if(i==j){ dp[i][j]=1; } else{ if(i+1==j && data[i] == data[j]){ dp[i][j]=2; mmax=f_max(mmax, dp[i][j]); } else{ if(data[i] == data[j] && dp[i+1][j-1]){ dp[i][j]=dp[i+1][j-1]+2; mmax=f_max(mmax, dp[i][j]); } else{ dp[i][j]=0; } }

        }
    }
}
printf("%d", mmax);

}

全部评论

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务