nyoj_37 回文字符串
2016-11-24 11:50
218 查看
原题链接》》》
解法描述:
输入字符串为s,将s逆置存到s1,然后求出s与s1的最长公共子序列(dp),最后用s长度len-dp,所得即为所求!!!
求最长公共子序列的算法》》》
解法描述:
输入字符串为s,将s逆置存到s1,然后求出s与s1的最长公共子序列(dp),最后用s长度len-dp,所得即为所求!!!
求最长公共子序列的算法》》》
#include<stdio.h> #include<string.h> char s[1005]; int dp[1005][1005]; void str_ver(char str[],char str1[]){ int len=strlen(str); int j=0; for(int i=len-1;i>=0;i--){ str1[j++]=str[i]; } str1[j]='\0'; } int Max(int a,int b){ return a>b?a:b; } int main(){ int N; scanf("%d",&N); while(N--){ scanf("%s",s); int len=strlen(s); memset(dp,0,sizeof(dp)); char s1[1005]; str_ver(s,s1); //规划求最长子序列! for(int i=0;i<len;i++){ for(int j=0;j<len;j++){ if(s[i]==s1[j]){ dp[i+1][j+1]=dp[i][j]+1; }else{ dp[i+1][j+1]=Max(dp[i][j+1],dp[i+1][j]); } } } printf("%d\n",len-dp[len][len]); } return 0; }
相关文章推荐
- NYOJ-37-回文字符串【LCS】
- nyoj 37 回文字符串 【DP】
- nyoj 37 回文字符串 【lcs&&dp】
- nyoj-37 回文字符串(最长公共子序列算法应用
- nyoj 37 回文字符串
- NYOJ 37 回文字符串
- NYOJ-37-回文字符串(最长公共子序列)
- nyoj_37 回文字符串
- NYOJ 37 回文字符串(记忆化搜索)
- NYOJ-37 回文字符串 —— LCS变形
- NYOJ 37 回文字符串
- nyoj 37 51nod oj 1092 回文字符串 【LCS变形】
- nyoj 37 回文字符串(经典dp五)
- NYOJ - 37 - 回文字符串(LCS变形)
- nyoj 36最长公共子序列&&nyoj 37 回文字符串
- nyoj 36 最长公共子序列 & nyoj 37 回文字符串
- NYOJ37最大回文字符串(LCS)
- 回文字符串(NYOJ 37)
- NYOJ 37 回文字符串
- nyoj 37 回文字符串(LCS)