• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++动态规划之最长公子序列实例

C++动态规划之最长公子序列实例

作者:司青 字体:[增加 减小] 来源:互联网 时间:2017-05-28

司青 通过本文主要向大家介绍了c++动态数组,c++动态二维数组,c++动态数组定义,c++动态库,c++动态分配二维数组等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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;
}
</div>

希望本文所述对大家的C++程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 动态数组C++实现方法(分享)
  • C与C++动态分配二维数组的实现方法
  • C++实现将数组中的值反转
  • C++实现当前时间动态显示的方法
  • C++ 动态创建按钮及 按钮的消息响应
  • C++动态规划之最长公子序列实例
  • C++动态规划之背包问题解决方法
  • C++实现旋转数组的二分查找
  • C++动态数组类的封装实例
  • C++中一维数组与指针的关系详细总结

相关文章

  • 2017-05-28C语言之实现控制台光标随意移动的实例代码
  • 2017-05-28C++静态成员函数不能调用非静态成员变量(详解)
  • 2017-05-28C语言中 int main(int argc,char *argv[])的两个参数详解
  • 2017-05-28C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法
  • 2017-05-28用c语言实现冒泡排序,选择排序,快速排序
  • 2017-05-28C++动态内存分配(new/new[]和delete/delete[])详解
  • 2017-05-28C语言求Fibonacci斐波那契数列通项问题的解法总结
  • 2017-05-28简单讲解C语言中宏的定义与使用
  • 2017-05-28.h和.cpp文件的区别(zt)详细介绍
  • 2017-05-28VC6.0代码自动提示 VC6.0在win7环境下代码提示智能化

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c语言:金币阵列的问题
    • 深入解析unsigned int 和 int
    • 解读C++编程的相关文件操作
    • 结构体类型数据作为函数参数(三种方法)
    • C/C++ 宏详细解析
    • C++实现判断字符串是否回文实例解析
    • C++实现不能被继承的类实例分析
    • string,CString,char*之间的转化
    • c++重载的详细总结
    • C语言中获取和改变目录的相关函数总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有