poj 3356

题意:给出两个字符串x和y,要求使用最少的操作使得X变为y,求解该最少操作数.

#include<iostream>
#include<fstream>

using namespace std;

int dp[1001][1001];
char a[1010],b[1010];
int n1,n2;


void read(){
//	ifstream cin("in.txt");
	int i,j,k;
	while(cin>>n1>>a>>n2>>b)
	{
	
	for(i=1;i<=n1;i++)
		dp[i][0]=i;
	for(i=1;i<=n2;i++)
		dp[0][i]=i;
	
	for(i=1;i<=n1;i++)
		for(j=1;j<=n2;j++)
		{
			if(a[i-1]==b[j-1])
				dp[i][j]=dp[i-1][j-1];
			else
				dp[i][j]=min(dp[i-1][j],min(dp[i][j-1],dp[i-1][j-1]))+1;
		}
	cout<<dp[n1][n2]<<endl;
	}

}

int main(){
	read();
	return 0;
}
代码:

posted on 2011-05-06 16:06  宇宙吾心  阅读(503)  评论(0编辑  收藏  举报

导航