51Nod1183 編輯距離(最長公共子序列變形)

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int dp[1001][1001]={0};
int main()
{
	string a,b;
	cin>>a>>b;
	int i,j;
	for(i=0;i<=a.length();i++)
		dp[0][i]=i;//初始化 
	for(j=0;j<=b.length();j++)
		dp[j][0]=j;//初始化 
	for(i=1;i<=a.length();i++)
		for(j=1;j<=b.length();j++)
			if(a[i-1]==b[j-1])
				dp[i][j]=dp[i-1][j-1];//如果相等,不用+1
			else
				dp[i][j]=min(min(dp[i][j-1],dp[i-1][j]),dp[i-1][j-1])+1;//如果不相等,取最小的值+1 
	cout<<dp[a.length()][b.length()]<<endl;
	return 0;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章