动态规划 --- 最长子序列问题
2017-11-20 19:15
260 查看
#include <stdio.h> #include <string.h> #define MAX_N 501 #define MAX_M 501 #define max(a,b) ((a)>(b)?(a):(b)) int main() { int n,m; char s[MAX_N],t[MAX_M]; int dp[MAX_M+1][MAX_N+1]; while (1){ scanf("%s",&s); scanf("%s",&t); if ((strcmp(s,"#")==0)||(strcmp(t,"#")==0))break; memset(dp,0,sizeof(dp)); int i,j; for (i = 0;i < strlen(s);i ++){ for (j = 0;j < strlen(t);j ++){ if (s[i]==t[j]){ if (j == 0 || i == 0)dp[i][j] = 0; dp[i+1][j+1] = dp[i][j] + 1;} else dp[i+1][j+1] = max(dp[i+1][j],dp[i][j+1]); } } printf("%d\n",dp[strlen(s)][strlen(t)]); } return 0; }
/*Description 给定两个字符串,输出两个字符串的最长公共子序列长度 Input 输入2个字符串(保证字符串长度不超过500) 文件有多组数据以‘#’号结束 Output 输出最长公共子序列长度 Sample Input abc abc abcd acdef # Sample Output 3 3*/
相关文章推荐
- 动态规划解最长子序列问题
- 动态规划问题学习路线:斐波那契数列,最大递增子序列,松鼠捡苹果,最大公共子序列,字符串编辑距离
- 动态规划 最长子序列
- nyist oj 17 单调递增最长子序列 (动态规划经典题)
- 动态规划——最长上升子序列问题(LIS)
- 求一个数组的最长递增子序列(动态规划经典问题)
- 动态规划-最长子序列求解-JAVA实现
- 动态规划_最大公共子序列长度问题
- 动态规划 字符串最大公共子序列以及最大公共子串问题LCS
- 1003---求最大连续子序列和的动态规划问题
- 动态规划之合唱队形问题(最长递增子序列变形)
- 动态规划之序列联配问题
- 经典动态规划问题--最长上升子序列 POJ--2533
- 动态规划之最长子序列长LCS
- 动态规划之最长子序列和最长子串
- 华为训练题目:初级——合唱队(递增子序列,DP动态规划问题)
- nyist oj 17 单调递增最长子序列 (动态规划经典题)
- 动态规划----最长子序列
- nyist oj 17 单调递增最长子序列 (动态规划经典题)
- 动态规划与序列问题