#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int
bs(int a){
if(a<0)return -a;
return a;
}
int min
(int a,int b,int c){
int temp;
temp=b;
if(a<b)temp=a;
if(c<temp)temp=c;
return temp;
}
int f[2001][2001]={0};
int main()
{
int i,j,k,l1,l2;
char a[2001]={0},b[2001]={0};
scanf("%s%s%d",a,b,&k);
l1=strlen(a);
l2=strlen(b);
for(i=1;i<=l1;i++)f[i][0]=i*k;
for(i=1;i<=l2;i++)f[0][i]=i*k;
f[0][0]=0;
for(i=1;i<=l1;i++)
for(j=1;j<=l2;j++){
f[i][j]=min(f[i-1][j]+k,f[i][j-1]+k,f[i-1][j-1]+bs((int) (a[i-1]-b[j-1])));
}
printf("%d\n",f[l1][l2]);
system("pause");
return 0;
}
这是动态规划
试水
最新推荐文章于 2022-08-19 18:15:49 发布