OUC——1062(dp)

来源:互联网 发布:葫芦侠软件源 编辑:程序博客网 时间:2024/05/21 06:44

题目地址:http://121.249.217.158/JudgeOnline/problem.php?id=1062

转移方程的参考地址:http://blog.csdn.net/kongying168/article/details/6909959

注:此题在挑战编程上也有。

源代码:

#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
char s1[1005];
char s2[1005];
short int a[1005][1005];
short int f[1005][1005];
int main()
{
int t;
int i,j;
cin>>t;
while(t--)
{
cin>>s1;
cin>>s2;
int len1=strlen(s1);
int len2=strlen(s2);
for(i=1;i<=len1;i++)
  for(j=1;j<=len2;j++)
  if(s1[i-1]==s2[j-1]) f[i][j]=0;
  else f[i][j]=1;
    a[0][0]=0;
    for(i=1;i<=max(len1,len2);i++)
      {
 a[i][0]=a[i-1][0]+1;
 a[0][i]=a[0][i-1]+1;
      }
      for(i=1;i<=len1;i++)
        for(j=1;j<=len2;j++)
        a[i][j]=min(a[i-1][j]+1,min(a[i][j-1]+1,a[i-1][j-1]+f[i][j]));
      cout<<a[len1][len2]<<endl;
}
return 0;

原创粉丝点击