题目描述
设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:
1、删除一个字符;
2、插入一个字符;
3、将一个字符改为另一个字符;
!皆为小写字母!
输入格式
第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于2000。
输出格式
只有一个正整数,为最少字符操作次数。
输入输出样例
输入
sfdqxbw
gfdgw
输出
4
//递归+记录(减少重复子问题计算)
//递归(从后往前匹配)可以缩小子问题规模,当规模小到0时有直观最优解。
//重写递归6.3,更好理解版本
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
using namespace std;
int m, n;
string s1, s2;
int dp[2005][2005];
int min_function(int r1, int r2)
{
if (r1 == -1 && r2 == -1) {
//两个串同时比较完了,最小操作就是0
return 0;
}
if (r1 < 0 || r2 < 0)