题目
代码
#include<iostream>
#include<string>
using namespace std;
int main(){
string s1,s2;
int i,j;
while(cin>>s1>>s2){
int dp[s1.size()+1][s2.size()+1];
dp[0][0]=1;
for(i=1;i<=s2.size();i++)
dp[0][i]=i+1;
for(i=1;i<=s1.size();i++)
dp[i][0]=i+1;
for(i=1;i<=s1.size();i++)
for(j=1;j<=s2.size();j++){
if(s1[i-1]==s2[j-1])
dp[i][j]=dp[i-1][j-1];
else{
dp[i][j]=min(min(dp[i-1][j]+1,dp[i][j-1]+1),dp[i-1][j-1]+1);
}
}
cout<<"1/"<<dp[s1.size()][s2.size()]<<endl;
}
}
参考:
【经典动态规划问题】字符串编辑最小代价问题
这个博主解释的很详细