九度OJ 1042:Coincidence(公共子序列) (DP)
来源:互联网 发布:校园网络规划设计 编辑:程序博客网 时间:2024/06/06 19:10
- 题目描述:
Find a longest common subsequence of two strings.
- 输入:
First and second line of each input case contain two strings of lowercase character a…z. There are no spaces before, inside or after the strings. Lengths of strings do not exceed 100.
- 输出:
For each case, output k – the length of a longest common subsequence in one line.
- 样例输入:
abcdcxbydz
- 样例输出:
2
- 来源:
- 2008年上海交通大学计算机研究生机试真题
思路:
动态规划,分别设置两个指针,分别从头到尾搜索两个数组,最后得到的就是最大值。
动态规划的关键方程是:
if
(a[i] == b[j])
res[i+1][j+1] = res[i][j]+1;
else
res[i+1][j+1] = max(res[i+1][j], res[i][j+1]);
代码:
#include <stdio.h>#include <string.h> #define N 100#define max(a, b) (((a)>(b)) ? (a) : (b)) int main(void){ int na, nb, i, j; char a[N+1], b[N+1]; int res[N+1][N+1]; while (scanf("%s%s", a, b) != EOF) { na = strlen(a); nb = strlen(b); memset(res, 0, sizeof(res)); for (i=0; i<na; i++) { for (j=0; j<nb; j++) { if (a[i] == b[j]) res[i+1][j+1] = res[i][j]+1; else res[i+1][j+1] = max(res[i+1][j], res[i][j+1]); } } /* for (i=1; i<=na; i++) { for (j=1; j<=nb; j++) { printf("%d ", res[i][j]); } printf("\n"); } */ printf("%d\n", res[na][nb]); } return 0;}/************************************************************** Problem: 1042 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:912 kb****************************************************************/
0 0
- 九度OJ 1042:Coincidence(公共子序列) (DP)
- 九度OJ 1042 Coincidence -- 动态规划(最长公共子序列)
- 九度OJ 1042 Coincidence (动态规划求最长公共子序列)
- 九度OJ-1042:Coincidence(最长公共子序列)
- Coincidence(LCS最长公共子序列)
- 九度 oj 题目1042:Coincidence (LCS)
- 九度oj-1042-Coincidence
- [九度OJ]1042Coincidence
- 题目1042:Coincidence(最长公共子序列)
- Coincidence -- 动态规划(最长公共子序列)
- 九度OJ 1011:最大连续子序列 (DP)
- 九度oj 题目1042:Coincidence
- //九度OJ教程98 动态规划之LCS(最长公共子序列)
- 九度1042:Coincidence
- 九度[1042]-Coincidence
- 九度OJ 1112:拦截导弹 (DP、最长下降子序列)
- 最长公共子序列(DP)
- 最长公共上升子序列 (dp)
- linux杂记
- CGI程序里调用system、popen运行命令需要root权限---boa配置需要注意的问题
- c# 窗体编程注意事项
- 黑马程序员——OC学习笔记04 核心语法
- 九度OJ 1041:Simple Sorting(简单排序) (排序)
- 九度OJ 1042:Coincidence(公共子序列) (DP)
- JVM调优总结
- ubuntu无法登陆问题收集
- openstack资源部署策略
- BroadcastReceiver
- Android按两次返回键退出程序
- 生存能力
- WPF中MainWindow与Page通信
- 九度OJ 1043:Day of Week(星期几) (日期计算)