POJ3356
来源:互联网 发布:网络7层协议 编辑:程序博客网 时间:2024/05/17 00:10
这道题一开始做不出来,去查解题报告都说很简单。但是自己分析的时候却没弄清楚。
首先这道题应该不是用短的那串去减掉最长公共子序列(没有严格证明过,只是画了一下感觉不是。)
状态转移一开始也没理清,睡了一觉,醒来有如神助一下就写出来了。
if(s1[i - 1] == s2[j - 1])f[i][j] = min(f[i - 1][j - 1], f[i][j - 1] + 1, f[i - 1][j] + 1);elsef[i][j] = min(f[i - 1][j - 1], f[i][j - 1], f[i - 1][j]) + 1;
这个方程自己仔细推敲下吧,不解释了。其实不难,只是自己想可能不太容易理清思路。
下面是这道题的代码:
#include<iostream>#include<string>using namespace std;int l1, l2;string s1, s2;int f[1100][1100];int min(int a, int b, int c){int k = a < b? a : b;return k < c? k : c;}int main(){while(cin >> l1 >> s1 >> l2 >> s2){for(int i = 1; i <= l1; ++i)f[i][0] = i;for(int j = 1; j <= l2; ++j)f[0][j] = j;f[0][0] = 0;for(int i = 1; i <= l1; ++i){for(int j = 1; j <= l2; ++j){if(s1[i - 1] == s2[j - 1])f[i][j] = min(f[i - 1][j - 1], f[i][j - 1] + 1, f[i - 1][j] + 1);elsef[i][j] = min(f[i - 1][j - 1], f[i][j - 1], f[i - 1][j]) + 1;}}cout << f[l1][l2] << endl;}return 0;}
- poj3356
- POJ3356
- POJ3356
- POJ3356 AGTC
- poj3356 - AGTC
- poj3356---AGTC
- poj3356(LCS)
- POJ3356 AGTC (LCS)
- [poj3356]字符串dp
- POJ3356 AGTC DP
- POJ3356——AGTC
- 最小编辑距离-poj3356
- [poj3356]字符串dp..2014.8.11
- 最短编辑距离 poj3356
- dp编辑距离 poj3356 AGTC
- POJ3356-AGTC(编辑距离)
- POJ3356--AGTC(edit distance)动态规划
- poj3356 AGTC(经典DP最小编辑距离)
- 方差,协方差,协方差矩阵
- Example4_13
- 数据结构(C#)-- 贪心算法解决背包问题
- 优酷视频真实地址解析
- 测试质量概念散文(一)
- POJ3356
- 从spring获得connection 并且是打开的
- mysql 全文检索
- unity3d 虚拟现实在各行业的应用
- iOS 常用数学函数
- oracle监听器启动错误-TNS-12546: TNS:permission denied
- Java计数锁CountDownLatch
- 输出小九九算法
- 程序员备忘:收藏常用正则表达式