您的位置:首页 > 其它

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: