动态规划法解最长公共子序列(计算机算法设计与分析实验报告)

实报 告 实验名称:任课教师::姓 名:完成日期:二、主要实验内容及要求:

要求按动态规划法原理求解问题;

要求交互输入两个序列数据;

要求显示结果。 三、实验环境和工具:

操作系统:win7操作系统

开发工具:eclipse3.4、jdk1.6

开发语言:java

四、实验结果与结论:(经调试正确的源程序和程序的运行结果)

1、源代码:

package cn.lgh;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

/**

* 动态规划法解最长公共子系列。

* @author 蓝冠恒

*/

public class LCS {

public static List resultList = new ArrayList();

/**

* 计算最优值

* @param x

* 字符系列数组

* @param y

* 字符系列数组

* @param c

* 存储x和y最长公共子系列长度数组

* @param b

* 记录c中元素对应子问题的解的数组

*/

public static void lcsLength(char x[], char y[], int[][] c, int[][] b) {

int m = x.length - 1;

int n = y.length - 1;

resultList.clear();

for (int i = 1; i <= m; i++) {

c[i][0] = 0;

}

for (int i = 1; i <= n; i++) {

c[0][i] = 0;

}

for (int i = 1; i <= m; i++) {

for (int j = 1; j <= n; j++) {

if (x[i] == y[j]) {

c[i][j] = c[i - 1][j - 1] + 1;

b[i][j] = 1;

} else if (c[i - 1][j] >= c[i][j - 1]) {

c[i][j] = c[i - 1][j];

b[i][j] = 2;

} else {

c[i][j] = c[i][j - 1];

b[i][j] = 3;

}

}

}

}

/**

* 构造最长公共子系列

* @param i

* 数组下标

* @param j

* 数组下标

* @param x

* 字符系列数组

* @param b

* 记录c中元素对应子问题的解的数组

*/

public static void lcs(int i, int j, char x[], int[][] b) {

if (i == 0 || j == 0) {

return;

}

if (b[i][j] == 1) {

lcs(i - 1, j - 1, x, b);

resultList.add(x[i]);

} else if (b[i][j] == 2) {

lcs(i - 1, j, x, b);

} else {

lcs(i, j - 1, x, b);

}

}

public static void main(String arg[]) {

String input;

char[] x;

char[] y;

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

do {

try {

do {

System.out.println("请输入第一串字符系列(按数字键1退出系统):");

input = in.readLine().trim();

} while (input.equals(""));

if (input.equals("1")) {

break;

}

计算机算法设计与分析 动态规划 实验报告,动态规划法解最长公共子序列(计算机算法设计与分析实验报告).doc...相关推荐

  1. 算法设计与分析——动态规划(五):最长公共子序列

    分类目录:<算法设计与分析>总目录 相关文章: · 动态规划(一):基础知识 · 动态规划(二):钢条切割 · 动态规划(三):矩阵链乘法 · 动态规划(四):动态规划详解 · 动态规划( ...

  2. 动态规划算法解最长公共子序列LCS问题

    动态规划算法解LCS问题 作者 July 二零一零年十二月三十一日 本文参考:微软面试100题系列V0.1版第19.56题.算法导论.维基百科. 第一部分.什么是动态规划算法 ok,咱们先来了解下什么 ...

  3. 动态规划算法分析和理解:最长公共子序列、公共子字符串

    定义啥的就不多说了,反正我有自己的理解就行.例题是,最长公共子序列和最长公共子字符串的动态规划求解过程 目录 一.递归和动态规划 二.动态规划求解步骤 三.最长公共子序列 四.最长公共子字符串 一.递 ...

  4. LeetCode——1143. 最长公共子序列(Longest Common Subsequence)[中等]——分析及代码(Java)

    LeetCode--1143. 最长公共子序列[Longest Common Subsequence][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 (1)思路 (2)代 ...

  5. 【常见笔试面试算法题12续集四】动态规划算法案例分析4 LCS练习题练习题(最长公共子序列的长度)

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 给定两个字符串A和B,返回两个字符串的最长公共子序列的长度.例如,A ...

  6. 动态规划——最长公共子序列(算法设计课题)

    问题描述: 若给定序列X={x1,x2,-,xm},则另一序列Z={z1,z2,-,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,-,ik}使得对于所有j=1,2,-,k有:zj=xi ...

  7. 【算法导论学习-29】动态规划经典问题02:最长公共子序列问题(Longest common subsequence,LCS)...

    2019独角兽企业重金招聘Python工程师标准>>> 问题描述:序列X={x1,x2,-,xn},Y={y1,y2,-,yn},当Z={z1,z2-,zn}是X的严格递增下标顺序( ...

  8. vb treeview 展开子节点_详解最长公共子序列问题,秒杀三道动态规划题目

    学算法认准 labuladong 后台回复进群一起力扣? 读完本文,可以去力扣解决如下题目: 1143.最长公共子序列(Medium) 583. 两个字符串的删除操作(Medium) 712.两个字符 ...

  9. 动态规划解最长公共子序列(LCS)(附详细填表过程)

    目录 相关概念 子序列形式化定义: 公共子序列定义: 最长公共子序列(以下简称LCS): 方法 蛮力法求解最长公共子序列: 动态规划求解最长公共子序列: 分析规律: 做法: 伪代码: 下面演示下c数组 ...

最新文章

  1. python学习面向对象_python学习之面向对象学习
  2. 【学术相关】如何将半页纸论文写到十页?
  3. 如何在VS2008中添加WM_INITDIALOG消息映射
  4. 一段js实现复制文本内容到剪切板
  5. 聚类算法当中的K-means算法如何去做天猫淘宝的推广任务
  6. mysql 5.6.23 源码包安装报错_Ubuntu 14.10下编译安装MySQL 5.6.23
  7. 如何为curl命令添加数据?
  8. 左手用R右手Python系列16——XPath与网页解析库
  9. 晒一波程序员的桌面,逼格超级高
  10. macd指标计算机应用,macd是怎么计算的
  11. 网络技术——路由器及其配置
  12. C# 后台处理 webp图片
  13. summernote 添加emoji表情包
  14. 软件开源,航芯方案分享 | 全自动咖啡机设计方案
  15. 谈谈对数据治理的理解
  16. IOTOS通采盒为BIM运维、GIS、CIM、数字孪生及IBMS高效率、低成本打通数据,接入楼宇园区子系统设备
  17. Kvaser Leaf light HS v2 | 如何使用Excel发送和接收CAN报文数据
  18. JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别
  19. url链接还原:将url 短链接(加密、压缩后的链接)还原出原始链接
  20. 小米5主板原理图_小米5手机拆机图解教程

热门文章

  1. 历来中国功夫vs泰拳战史
  2. Android霓虹灯布局
  3. 应用ffmpeg进行视频文件格式转换
  4. 种子工程专业学计算机,全国开设种子科学与工程专业有哪些院校呢?
  5. PHP月份跨月计算日期不正确的处理,获取月份的第一天和最后一天
  6. 决策智能:在AI时代为领导力而生的新学科
  7. 基于GoKit(4)的物联网应用开发沙龙体验
  8. ansible完全攻略
  9. 划片机在切割不同产品时,如何正确地选择划切刀?
  10. 分享116个ASP留言日记源码,总有一款适合您