Minimum Edit Distance POJ 3356 && 51Nod 1183
来源:互联网 发布:棋牌刷分软件 编辑:程序博客网 时间:2024/05/29 19:41
1183 编辑距离
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注
编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由
一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成
另一个字符,插入一个字符,删除一个字符。
例如将kitten一字转成sitting:
sitten (k->s)
sittin (e->i)
sitting (->g)
所以kitten和sitting的编辑距离是3。俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。
给出两个字符串a,b,求a和b的编辑距离。
Input
第1行:字符串a(a的长度 <= 1000)。
第2行:字符串b(b的长度 <= 1000)。
Output
输出a和b的编辑距离
Input示例
kitten
sitting
Output示例
3
思路:
dp[i][j]所代表的意义很简单:s1 的0~i-1的字符串和s2的0~j-1的Minimum Edit Distance。
三种Edit也很简单,但是思考下面的问题:
为什么要考虑边界问题?
为什么可以这样算就能得出结果?
答一:边界问题是在计算过程中往前推的一个状态,必须做预处理,并且意义也很明显。答二:这样计算可以得出结果的原因是它考虑了每一种情况,而每一种情况都在之前已经算出。(两个for循环)
#include <iostream>#include <cstdio>using namespace std;const int maxn = 105;int n,sum;int a[maxn],W;int dp[maxn*100];int main(){ //freopen("in.txt","r",stdin); scanf("%d",&n); for(int i = 1;i <= n; i++) { scanf("%d",&a[i]); sum += a[i]; } W = sum/2; for(int i = 1;i <= n; i++) { for(int j = W;j >= a[i]; j--) { dp[j] = max(dp[j],dp[j-a[i]] + a[i]); } } printf("%d\n",sum - dp[W]*2); return 0;}
POJ3356 A->B和原问题一样,不必过多处理。
不过需要注意POJ是多个样例。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 1005;int len1,len2;char s1[maxn],s2[maxn];int dp[maxn][maxn];int min(int x,int y,int z){ int M = x; if(M > y) M = y; if(M > z) M = z; return M;}int main(){ //freopen("in.txt","r",stdin); while(scanf("%d%s%d%s",&len1,s1,&len2,s2) != EOF) { memset(dp,0,sizeof(dp)); for(int i = 0;i <= len1; i++) { dp[i][0] = i; } for(int i = 0;i <= len2; i++) { dp[0][i] = i; } for(int i = 1;i <= len1; i++) { for(int j = 1;j <= len2; j++) { if(s1[i-1] == s2[j-1]) dp[i][j] = dp[i-1][j-1]; else { dp[i][j] = min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1]) + 1; } } } printf("%d\n",dp[len1][len2]); } return 0;}
阅读全文
1 0
- Minimum Edit Distance POJ 3356 && 51Nod 1183
- 自然语言处理-Minimum edit distance
- POJ 3356 AGTC(经典DP Edit Distance)
- 动态规划 求解 Minimum Edit Distance
- 动态规划 求解 Minimum Edit Distance
- mini edit distance & minimum cost alignment
- “最小编辑距离(Minimum Edit Distance)”
- Minimum Edit Distance最小编辑算法
- 最小编辑距离(Minimum edit distance)
- 编辑距离(Minimum Edit Distance)
- 最小编辑距离 | Minimum Edit Distance
- Minimum edit distance(levenshtein distance)(最小编辑距离)初探
- POJ 3356 AGTC 解题报告(Edit Distance,DP)
- zzulioj 1206 字符串的修改(dp求解 Minimum Edit Distance )
- edit distance
- Edit Distance
- edit distance
- Edit Distance
- JDK-lib
- 跨站脚本攻击XSS
- 关于Vue
- 2017.5.17 COCI2014/2015 Contest#5
- 差分约束系统,出纳员的雇佣
- Minimum Edit Distance POJ 3356 && 51Nod 1183
- spark性能调优--jvm调优
- XSS危害——session劫持
- Windows上搭建Kafka运行环境
- PHP 推荐排序
- 编程代码规范
- 跨站请求伪造CSRF
- 全桥驱动变压器漏感处理
- Mininet与真实网络链接的方法