51nod 1183 编辑距离
2016-03-06 09:59
330 查看
因为题目已经说了有三种操作,那就定义状态dp[i][j]表示第一个字符串前i个字符与第二个字符串前j个字符,要相同所需要的最少操作,然后状态的转移就是三种操作最小的那个了。感觉这种题和那个最长公共字串问题很像。
#include <iostream> #include <cstring> #include <cstdio> const int MAX = 1e3 + 5; char arr1[MAX]; char arr2[MAX]; int dp[MAX][MAX]; int tmp_min(int a, int b, int c) { if (a > b) a = b; if (a > c) return c; else return a; } int main() { scanf("%s%s", arr1 + 1, arr2 + 1); int lenth1 = strlen(arr1 + 1); int lenth2 = strlen(arr2 + 1); for (int i = 0; i <= lenth1; ++i) dp[i][0] = i; for (int j = 0; j <= lenth2; ++j) dp[0][j] = j; for (int i = 1; i <= lenth1; ++i) { for (int j = 1; j <= lenth2; ++j) { int cost = arr1[i] == arr2[j] ? 0 : 1; dp[i][j] = tmp_min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost); } } std::cout << dp[lenth1][lenth2] << std::endl; return 0; }
相关文章推荐
- 常用的Linux操作命令(一)
- Tencent qmail 的一个漏洞
- Java Request中文乱码
- Transact-SQL 参考 返回并允许要查询的 Microsoft® SQL Server™ 版本信息
- 蓝桥杯 算法训练 P1103 (结构体指针)
- PAT1040有几个PAT
- 解析Hibernate中的持久化—ORM(转载)
- poj 2676 Sudoku
- Go代理,修改标题
- iOS进阶之旅-图片裁剪
- iOS8- UIAlertViewController
- python实现PMI(求词语关联性)
- cdb与pdb的一些常用查询命令
- EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS的删除创建
- 需要学习的内容
- bzoj4010: [HNOI2015]菜肴制作
- IOS UIAlertView(警告框)方法总结
- 设计模式(Design Patterns)
- update case when
- 编译samba遇到need autoconf 2.53 or later to build samba from GIT