poj 2264
2011-05-11 15:34
162 查看
水题,定义好状态
代码:
代码:
#include<iostream> #include<fstream> using namespace std; char c1[110],c2[110]; int dp[110][110]; void print(int s,int t){ int i,j,k; if(s==0&&t==0) return; if(s==0) { for(i=0;i<t;i++) cout<<c2[i]; return; } if(t==0) { for(i=0;i<s;i++) cout<<c1[i]; return; } if(c1[s-1]==c2[t-1]) { print(s-1,t-1); cout<<c1[s-1]; } else { if(dp[s-1][t]+1==dp[s][t]) { print(s-1,t); cout<<c1[s-1]; } else { print(s,t-1); cout<<c2[t-1]; } } } void read(){ // ifstream cin("in.txt"); int i,j,k; while(cin>>c1>>c2) { for(i=1;i<=strlen(c1);i++) dp[i][0]=i; for(i=1;i<=strlen(c2);i++) dp[0][i]=i; for(i=1;i<=strlen(c1);i++) for(j=1;j<=strlen(c2);j++) { if(c1[i-1]==c2[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=min(dp[i-1][j],dp[i][j-1])+1; } print(strlen(c1),strlen(c2)); cout<<endl; } } int main(){ read(); return 0; }
相关文章推荐
- POJ 2264 Advanced Fruits--最长公共子序列
- poj 2264 Advanced Fruits dp解LCS的对偶问题
- 【poj 2264】 Advanced Fruits
- LCS(打印全路径) POJ 2264 Advanced Fruits
- POJ-2264(DP + 保存路径)
- poj 2264 Advanced Fruits lcs
- poj 2264 Advanced Fruits
- POJ 2264 Advanced Fruits
- poj 2264 LCS(同时包含两个串的最短父串)
- poj-2264-Advanced Fruits【LCS】(回溯输出)
- poj 2264(LCS)
- POJ 2264 Advanced Fruits(最长公共子序列)
- poj 2264 Advanced Fruits (LCS)
- POJ 2264
- POJ 2264 Advanced Fruits DP+记录路径
- POJ_1028
- poj 1166 The Clocks
- POJ 3332 Parsing Real Numbers
- POJ 1474 半平面交
- POJ 1390 Blocks ||UVA 10559 - Blocks(记忆化搜索)