[dp]LCS最长公共子序列
2017-05-13 12:08
302 查看
https://www.51nod.com/tutorial/course.html#!courseId=4
复杂度:${\rm O}(nm)$
转移方程:
#include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; int dp[1002][1002]; char path[1002]; string s,t; int main(){ cin>>s>>t; n=s.size(); m=t.size(); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(s[i]==t[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]); } } stack<char>ss; int i=n,j=m; while(dp[i][j]){ if(dp[i][j]==dp[i-1][j]) i--; else if(dp[i][j]==dp[i][j-1]) j--; else{ ss.push(s[i-1]); i--,j--; } } while(!ss.empty()){ printf("%c",ss.top()); ss.pop(); } return 0; }
相关文章推荐
- 最长公共子序列LCS(DP)
- poj 1458 LCS(dp)全部最长公共子序列
- DP复习——最长公共子序列 LCS 问题
- POJ 1458 Common Subsequence (DP+LCS,最长公共子序列)
- 51nod 1006 最长公共子序列Lcs(基础dp)
- LCS最长公共子序列~dp学习~4
- hdu 1080 (DP LCS最长公共子序列)
- 基于DP的LCS(最长公共子序列)问题
- 最长公共子序列Lcs (dp)
- 最长公共子序列 LCS DP
- 51Nod 1006 最长公共子序列LCS DP水题
- 最长公共子序列,DP,LCS
- 基于DP的LCS(最长公共子序列)问题
- 【tyvj】【dp】最长公共子序列(LCS)
- DP之最长公共子序列 LCS
- HDUOJ 1159 - Common Subsequence(DP:最长公共子序列LCS)
- 最长公共子序列Lcs 51Nod - 1006 (线性dp)
- 51Nod 1006 最长公共子序列Lcs(dp)
- DP实例之最长公共子序列LCS
- 51Nod 1006 最长公共子序列Lcs(DP)