一、实验内容及要求
 1.要求按动态规划法原理求解问题;
 2.要求在20以内整数随机产生两个序列数据;
 3.要求显示随机产生的序列及最长公共子序列。
二、实验步骤
 1、随机产生数列;
 2、输出随机序列;
 2、计算公共序列后,输出公共序列。

Java源代码:

package suanfafenxi;
import java.util.Random;
public class shiyan4 {
static int langth=10; //随机字符串的长度
static int[] x = new int[langth];
static int[] y= new int[langth];
static int [][]b=new int [ langth][langth];
//产生随机字符串x函数
public static void suijishux(){
Random rad=new Random(); //产生随机数
for (int i = 0; i<langth; i ++)
{
x[i] = rad.nextInt(20);
}
}
//产生随机字符串Y函数
public static void suijishuy(){
Random rad=new Random(); //产生随机数
for (int i = 0; i<langth; i ++)
{
y[i] = rad.nextInt(20);
}
}
//输出随机字符串X函数
public static void prinfx(){
System.out.print("随机字符串X:");
for (int i = 1; i < langth; i ++)
{
System.out.print("["+x[i]+"] "); }
}
//输出随机字符串Y函数
public static void prinfy(){
System.out.print("\n随机字符串Y:");
for (int i = 1; i < langth; i ++)
{
System.out.print("["+y[i]+"] "); }
} //主函数
public static void main(String[] args) {
try
{
suijishux();
System.out.println("随机序列X生成功。。。。");
}
catch(Exception e)
{
System.out.println("随机序列X生成失败!!");
}
try
{
suijishuy();
System.out.println("随机序列Y生成功。。。。");
}
catch(Exception e)
{
System.out.println("随机序列Y生成失败!!");
}
prinfx();
prinfy();
shiyan4 shiyan=new shiyan4();
shiyan.mixLength(x,y,b);
System.out.println("\nX和Y的最长公共子序列 是:");
shiyan.bijiaojieguo(langth-1,langth-1,x,b);
}
public void mixLength(int []x,int []y,int [][]b){
int [][]c=new int[langth][langth];
for (int i=1;i<langth;i++) c[i][0]=0;
for (int i=1;i<langth;i++) c[0][i]=0;
for(int i=1;i<langth;i++) for(int j=1;j<langth;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][1];
b[i][j]=2; }
else{ c[i][j]=c[i][j-1];
b[i][j]=3;
}
}
}
public void bijiaojieguo(int i,int j,int []x,int[][]b){
if(i==0 || j==0) return;
if(b[i][j]==1){
bijiaojieguo(i-1,j,x,b);
System.out.print(x[i]+" ");
}
else if (b[i][j]==2) bijiaojieguo(i-1,j,x,b);
else bijiaojieguo(i,j-1,x,b);
}
} 运行结果如下:


动态规划法解最长公共子序列<算法分析>的更多相关文章

  1. 《算法导论》读书笔记之动态规划—最长公共子序列 & 最长公共子串(LCS)

    From:http://my.oschina.net/leejun2005/blog/117167 1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要 ...

  2. 动态规划法(十)最长公共子序列(LCS)问题

    问题介绍   给定一个序列\(X=<x_1,x_2,....,x_m>\),另一个序列\(Z=<z_1,z_2,....,z_k>\)满足如下条件时称为X的子序列:存在一个严格 ...

  3. 经典递归问题:0,1背包问题 kmp 用遗传算法来解背包问题,hash表,位图法搜索,最长公共子序列

    0,1背包问题:我写笔记风格就是想到哪里写哪里,有很多是旧的也没删除,代码内部可能有很多重复的东西,但是保证能运行出最后效果 '''学点高大上的遗传算法''' '''首先是Np问题的定义: npc:多 ...

  4. Python-求解两个字符串的最长公共子序列

    一.问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符串1:BDCABA:字符串2:ABCBDAB.则这两个字符串的最长公共子序列长 ...

  5. 51nod 1006 最长公共子序列Lcs(经典动态规划)

    传送门 Description 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的).   比如两个串为:   abcicba abdkscab   ab是两个串的子序列,abc也是 ...

  6. UVa 111 - History Grading (by 最长公共子序列 )

     History Grading  Background Many problems in Computer Science involve maximizing some measure accor ...

  7. LCS最长公共子序列(最优线性时间O(n))

    这篇日志主要为了记录这几天的学习成果. 最长公共子序列根据要不要求子序列连续分两种情况. 只考虑两个串的情况,假设两个串长度均为n. 一,子序列不要求连续. (1)动态规划(O(n*n)) (转自:h ...

  8. 算法导论-动态规划(最长公共子序列问题LCS)-C++实现

    首先定义一个给定序列的子序列,就是将给定序列中零个或多个元素去掉之后得到的结果,其形式化定义如下:给定一个序列X = <x1,x2 ,..., xm>,另一个序列Z =<z1,z2  ...

  9. 最长公共子序列(LCS问题)

    先简单介绍下什么是最长公共子序列问题,其实问题很直白,假设两个序列X,Y,X的值是ACBDDCB,Y的值是BBDC,那么XY的最长公共子序列就是BDC.这里解决的问题就是需要一种算法可以快速的计算出这 ...

随机推荐

  1. Triangular Pastures POJ - 1948

    Triangular Pastures POJ - 1948 sum表示木条的总长.a[i]表示第i根木条长度.ans[i][j][k]表示用前i条木条,摆成两条长度分别为j和k的边是否可能. 那么a ...

  2. 题解报告:poj 2533 Longest Ordered Subsequence(最长上升子序列LIS)

    Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence ...

  3. Android开发学习--RecycleView入门

    该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView.GridView 通过设置它提供的不同LayoutManager,ItemDecoration , It ...

  4. 轻松搞定Spring+quartz的定时任务

    1.spring 的定时任务写法有两种:一种是继承工作类,一种是普通的Bean,定时写法有两种写法:一种是以时间间隔启动任务SimpleTriggerBean,一种是以时刻启动任务CronTrigge ...

  5. AndroidStudio启动App时,数据取不到。

    最近在用AndroidStudio开发App的时候,所连的服务器如果是换成本机上的,那么启动App的时候数据就读取不出来,连其它电脑上的服务器就是正常的,如下: 05-11 09:36:57.178 ...

  6. [Windows Server 2008] 搭建数据云备份

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:如何搭建数 ...

  7. 深度神经网络简述与Capsule介绍

    本人最近初学Hinton大神的论文<Dynamic Routing Between Capsules >,对深度神经网络的内容进行了简要总结,将观看“从传统神经网络的角度解读Capsule ...

  8. 习水医院12C RAC 数据库安装文档

        环境介绍 OS: Oracle Enterprise Linux 6.4 (For RAC Nodes) DB: GI and Database 12.1.0.2 所需介质 p17694377 ...

  9. Dynamic type checking and runtime type information

    动态类型的关键是将动态对象与实际类型信息绑定. See also: Dynamic programming language and Interpreted language Dynamic type ...

  10. 深入理解python对象及属性

    类属性和实例属性首先来看看类属性和类实例的属性在python中如何存储,通过__dir__方法来查看对象的属性 >>> class Test(object): pass>> ...