51nod|51nod oj 1183 编辑距离 【求一个字符串到另一个字符串的最小操作次数【类似LCS】】
题目链接:1183
此题相当于LCS---下面的看不懂了可以看LCS他们的原理是像似的-
设S串和T串--
我们可以从后面开始看-.-
//如果s[n]==t[m]--那么dp[n][m]=dp[n-1][m-1]--因为一样不操作
//如果s[n]!=t[m]--那么dp[n][m]=min(dp[n-1][m-1],dp[n-1][m],dp[n][m-1])+1
//dp[n-1][m-1]为替换--
//dp[n-1][m]--删s[n]或在t[m]后加一s[n]
//dp[n][m-1]--删t[m]或在s[n]后加一t[m]
当dp [ 0 ] [i ]或者 dp [ i ] [ 0 ]时--他们等于i(删除i个或增加i个)
代码:
#include
#include
#include
using namespace std;
int dp[1020][1020];
int main()
{
char a[1020],b[1020];
scanf("%s%s",a,b);
int n=strlen(a);
int m=strlen(b);
memset(dp,0x3f3f3f,sizeof(dp));
for (int i=0;
i<1010;
i++)
dp[i][0]=dp[0][i]=i;
for (int i=1;
i<=n;
i++)
for (int j=1;
j<=m;
j++)
{
if (a[i-1]==b[j-1])
dp[i][j]=dp[i-1][j-1];
else
dp[i][j]=min(min(dp[i-1][j-1],dp[i-1][j]),dp[i][j-1])+1;
}printf("%d\n",dp[n][m]);
return 0;
}
【51nod|51nod oj 1183 编辑距离 【求一个字符串到另一个字符串的最小操作次数【类似LCS】】】
推荐阅读
- 涵养字外功
- 135编辑器给大家解析12月新媒体营销日历
- 论文发表时间能提前吗-WOSCI沃斯编辑
- 零基础学|零基础学 Electron
- Linux|Linux sed 使用大全
- Markdown编辑器Typora使用体验——真香
- Xcode
- PDF修改背景颜色怎么做|PDF修改背景颜色怎么做 用什么PDF编辑工具实现
- Django数据库的建立
- 新闻工作编辑工作笔记