C++动态规划之最长公子序列实例
本文实例讲述了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++程序设计有所帮助。
栏 目:C语言
下一篇:C++中的重载、覆盖、隐藏介绍
本文标题:C++动态规划之最长公子序列实例
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/3104.html
您可能感兴趣的文章
- 04-02c语言没有round函数 round c语言
- 01-10深入理解C++中常见的关键字含义
- 01-10使用C++实现全排列算法的方法详解
- 01-10APUE笔记之:进程环境详解
- 01-10c++中inline的用法分析
- 01-10用C++实现DBSCAN聚类算法
- 01-10全排列算法的非递归实现与递归实现的方法(C++)
- 01-10C++大数模板(推荐)
- 01-10浅谈C/C++中的static与extern关键字的使用详解
- 01-10深入C/C++浮点数在内存中的存储方式详解
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 01-10delphi制作wav文件的方法
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-11ajax实现页面的局部加载
- 04-02jquery与jsp,用jquery
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10SublimeText编译C开发环境设置
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-10C#中split用法实例总结