POJ 1458 Common Subsequence
2017-03-27 15:58
218 查看
传送门:http://poj.org/problem?id=1458
解题思路:
简单的最长公共子序列。
二维数组实现:
解题思路:
简单的最长公共子序列。
#include <iostream> #include <cstring> #include <string> #include <algorithm> #include <cstdio> using namespace std; const int MAXN=1000; int dp[MAXN][MAXN]; int main(){ string str1,str2; while(cin>>str1>>str2){ int n=str1.size(); int m=str2.size(); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(str1[i-1]==str2[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } printf("%d\n",dp [m]); } }
二维数组实现:
#include <iostream> #include <cstring> #include <string> #include <algorithm> #include <cstdio> using namespace std; const int MAXN=1000; int dp[2][MAXN]; int main(){ string str1,str2; while(cin>>str1>>str2){ int n=str1.size(); int m=str2.size(); memset(dp,0,sizeof(dp)); int fg=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(str1[i-1]==str2[j-1]) dp[fg][j]=dp[!fg][j-1]+1; else dp[fg][j]=max(dp[!fg][j],dp[fg][j-1]); } fg^=1; } printf("%d\n",max(dp[0][m],dp[1][m])); } }
相关文章推荐
- POJ 1458 Common Subsequence(最长公共子序列问题)
- POJ-1458 Common Subsequence(线性动规,最长公共子序列问题)
- POJ 1458 Common Subsequence (动规,最长公共子序列)
- poj 1458 Common Subsequence【LCS】
- POJ 1458 || HDOJ 1159 Common Subsequence (DP)
- poj1458 Common Subsequence【LCS】
- poj 1458 Common Subsequence(lcs模板)
- POJ-1458-Common Subsequence
- POJ 1458 Common Subsequence
- POJ 1458-Common Subsequence (动态规划)
- POJ_1458_Common Subsequence
- POJ1458 Common Subsequence DP
- poj 1458 Common Subsequence(lcs)
- POJ 1458 Common Subsequence 最长公共子序列(LCS)
- 最长公共子序列(LCS, Longest Common Subsequence), POJ 1458
- POJ:1458 Common Subsequence(LCS)
- poj1458 Common Subsequence(最长公共子序列)
- POJ 1458 Common Subsequence
- POJ 1458 && HDU 1159 Common Subsequence(LCS)
- POJ 1458 Common Subsequence 【最长公共子序列】