C++动态规划之最长公子序列实例
2015-04-20 12:27
1061 查看
本文实例讲述了C++动态规划之最长公子序列解决方法。分享给大家供大家参考。具体分析如下:
问题描述:
求出两个字符串中的最长公子序列的长度。
输入:
csblog
belong
输出:
max length = 4
实现代码:
#include <stdio.h> #include <string.h> int arr[200][200]; /* 表示str1的前i位和str2的前j位的最长公子序列的长度 */ int main() { char str1[100],str2[100]; /* 输入数据 */ scanf("%s%s",str1,str2); int len1 = strlen(str1); int len2 = strlen(str2); /* 初始化数组 */ int i,j; for(i = 0 ; i <= len1 ; ++i) { for(j = 0 ; j <= len2 ; ++j) arr[i][j] = 0; } /* 计算 */ for(i = 1 ; i <= len1 ; ++i) { for(j = 1 ; j <= len2 ; ++j) { /* 字符相同,则最长公子序列长度加1 */ if(str1[i - 1] == str2[j - 1]) { arr[i][j] = arr[i - 1][j - 1] + 1; } else /* 当前字符不相同,则取上次选择的最大值做为当前结果 */ { arr[i][j]=arr[i][j-1]>arr[i-1][j]?arr[i][j-1]:arr[i-1][j]; } } } /* 输出结果 */ printf("max length = %d\n",arr[len1][len2]); return 0; }
希望本文所述对大家的C++程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- 动态规划实例(一):最长递增子序列(LIS)
- 动态规划 之 最长上升序列
- poj 1080(动态规划之最长公共之序列)
- C++实现矩阵链乘法利用动态规划及运行实例结果
- 动态规划 最长递增子序列 oj合唱团问题
- 两道基础动态规划poj1458最长公共子序列和poj2533最长上升序列
- 动态规划之合唱队形问题(最长递增子序列变形)
- noip2013 花匠 (动态规划求最长抖动序列)
- 动态规划 之 【最长公共序列】 LCS算法
- C++实现矩阵链乘法利用动态规划及运行实例结果
- 动态规划---求最长公共字符序列
- 动态规划-最长非降子序列
- 动态规划之最长递增子序列 ,最长公共子序列
- 动态规划-最长递增序列(LIS)【模板】
- C++实现矩阵链乘法利用动态规划及运行实例结果
- 动态规划:最长上升子序列(二分算法 nlogn)
- 动态规划:最长子序列问题
- 动态规划之最长递增子序列(思路)
- 动态规划实例(十二):最长回文子串(LPS)
- C++实现矩阵链乘法利用动态规划及运行实例结果