poj 3356 字符串编辑
来源:互联网 发布:facebook登录网络异常 编辑:程序博客网 时间:2024/06/05 18:45
dp[i][j]为第一个串的前i个字符转化为第二个串的前j个字符所需最小的步骤 如果a[i]==b[i], dp[i][j]=dp[i-1][j-1].
如果使用替换操作,那么到dp[i][j]的最小代价应该为dp[i-1][j-1]+1,因为s1[i]!=s2[j],只要把s1[i]换成s2[j]或者把s2[j]换成s1[i]即可
如果使用删除操作,那么到dp[i][j]的最小代价应该为dp[i][j-1]+1,因为此时在s2中加入一个空格,就相当于在s1中删除一个字符
如果使用插入操作,那么到dp[i][j]的最小代价应该为dp[i-1][j]+1,此时在s1中插入一个字符
#include<iostream>#include<cstring>#include<cstdio>#include<string>using namespace std;char a[1005],b[1005];int dp[1005][1005];int main(){ //freopen("Input.txt","r",stdin); int i,j,lena,lenb; while(~scanf("%d%s",&lena,a)) { scanf("%d%s",&lenb,b); if(strcmp(a,b)==0) { puts("0");continue; } for(i=0;i<=lena;i++) //初始化是b为空,需要加的字符个数。 dp[i][0]=i; for(i=0;i<=lenb;i++) //初始化。 dp[0][i]=i; for(i=1;i<=lena;i++) { for(j=1;j<=lenb;j++) { if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]; else dp[i][j]=min(dp[i-1][j],min(dp[i][j-1],dp[i-1][j-1]))+1; } } printf("%d\n",dp[lena][lenb]); } return 0;}
- poj 3356 字符串编辑
- POJ 3356 【字符串编辑距离】
- poj 3356 求最短编辑距离
- POJ 3356(编辑距离)
- poj 3356 AGTC 【编辑距离】
- POJ-3356 AGTC(编辑距离)
- 字符串编辑
- 字符串编辑
- POJ-3356(编辑距离)(AGTC)
- poj 3356 编辑距离(空间优化)
- poj 3356 AGTC(dp,最小编辑距离)
- POJ 3356 AGTC (编辑距离 DP)
- POJ 3356 AGTC(最小编辑距离)
- POJ 3356 AGTC (最小编辑距离)
- POJ 3356 AGTC 最短编辑距离
- POJ 3356 AGTC 最短编辑距离
- 字符串的编辑距离
- 字符串编辑距离查表法
- gridview的OnRowDataBound必须存在 <Columns>
- C/C++明确定义了顺序点的概念:
- 浅谈 内存对齐
- 把Vim改装成一个IDE编程环境(图文) -- 续1
- 基因序列相似性问题CCR版(KM模式匹配)
- poj 3356 字符串编辑
- apt-get
- 整数与字符串的相互转换
- 实现文件夹搜索
- case 和decode 的区别与共同点
- OpenCV: Features2D Features FrameWork 图像二维特征检测、描述以及匹配框架的层次解析
- Vertical Histogram
- STL map用法之ZZ买衣服
- FZU 2113 Jason的特殊爱好