#include<bits/stdc++.h>
using namespace std;
string A,B;
int dp[2003][2003];
int lena,lenb;
int k;
int f(int x,int y){
if(dp[x][y]<=200000) return dp[x][y];
if(x==0&&y==0) return dp[x][y]=abs(int(A[x])-int(B[y]));
if(x==0) return dp[x][y]=min(f(x,y-1)+k,abs(int(A[x])-int(B[y]))+y*k);
if(y==0) return dp[x][y]=min(f(x-1,y)+k,abs(int(A[x])-int(B[y]))+x*k);
return dp[x][y]=min(min(abs(int(A[x])-int(B[y]))+f(x-1,y-1),f(x-1,y)+k),f(x,y-1)+k);
}
int main(){
memset(dp,0x3f,sizeof(dp));
cin>>A;
cin>>B;
lena=A.length();
lenb=B.length();
cin>>k;
cout<<f(lena-1,lenb-1);
return 0;
}
为什么样例没过 但是对了?测评结果