编程实现动态规划的算法实验报告
更新时间:2023-07-19 23:23:01 阅读量: 实用文档 文档下载
这是一份实验报告,内容是矩阵连乘问题和最长公共子序列问题
《算法设计与分析》实验报告
实验序号: 实验项目名称:编程实现动态规划的算法
这是一份实验报告,内容是矩阵连乘问题和最长公共子序列问题
附源程序清单:
最长公共子序列:
Import java.io.BufferedReader;
Import java.io.IOException;
Import java.io.InputStreamReader;
Import java.util.ArrayList;
Import java.util.Scanner;
Import java.util.List;
/**
*
动态规划法解最长公共子系列。
*
@author
蓝冠恒
*/
Public class LcsLength {
public
static
这是一份实验报告,内容是矩阵连乘问题和最长公共子序列问题
List<Character>
resultList =
New ArrayList<Character>();
/**
*
计算最优值
*
@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;
}
}
}
}
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 a;
String input;
char[] x;
char[] y;
Scanner scan=
New Scanner(System.in);
BufferedReader in = New BufferedReader(New InputStreamReader(System.in));
do{
try
{
do
{
System.out.println("请输入第一串字符系列");
input = in.readLine().trim();
}
while(input.equals(""));
input = "S" + input;
x = input.toCharArray();
do{
System.out.println("请输入第二串字符系列");
input = in.readLine().trim();
}
while (input.equals(""));
这是一份实验报告,内容是矩阵连乘问题和最长公共子序列问题
input = "S" + input;
y = input.toCharArray();
int[][] b = newint[x.length][y.length];
int[][] c = New int[x.length][y.length];
lcsLength(x, y, c, b);
// 计算最优值
lcs(x.length- 1, y.length
- 1, x, b);
// 构造最长公共子系列
int
size = resultList.size();
System.out.print("最长公共子系列为:"); for(
int
i = 0; i < size; i++) {
System.out.print(resultList.get(i));
}
System.out.println("\n");
}
catch
(IOException e) {
e.printStackTrace();
}
System.
out.print("继续输入请按y。。退出请按任意键!");
a=scan.nextLine();
}
while
(a.equals("y"));
}
}
连乘问题
这是一份实验报告,内容是矩阵连乘问题和最长公共子序列问题
import
java.io.BufferedReader;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.util.ArrayList;
import
java.util.Scanner;
import
java.util.List;
/**
这是一份实验报告,内容是矩阵连乘问题和最长公共子序列问题
*
动态规划法解最长公共子系列。
*
@author
蓝冠恒
*/
public
class
LcsLength {
这是一份实验报告,内容是矩阵连乘问题和最长公共子序列问题
public
static
List<Character>
resultList
=
new
ArrayList<Character>();
/**
*
计算最优值
这是一份实验报告,内容是矩阵连乘问题和最长公共子序列问题
*
@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;
}
正在阅读:
编程实现动态规划的算法实验报告07-19
贵州省地方税务局电子税务局网上申报系统操作指南_图文09-06
12制药工艺设计01-18
北大 舒茨现象学社会学10-10
长安大学测试与传感器技术试题库及答案10-16
心理健康教案 - 情绪万花筒11-17
18年高考化学二轮复习课余加餐增分训练第二周选择题(一)03-21
被推荐人现实表现情况04-04
药物Ⅰ期临床试验管理指导原则(试行)05-29
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 算法
- 编程
- 规划
- 实验
- 实现
- 报告
- 动态