算法分析实验四报告 联系客服

发布时间 : 星期三 文章算法分析实验四报告更新完毕开始阅读d1194865caaedd3383c4d3a2

《算法设计与分析》实验报告

目 录

一、实验内容描述和功能分析.

二、算法过程设计.

三、程序调试及结果(附截图)

四、源代码(附源代码).

. 一、实验内容描述和功能分析.

1.最长公共子序列

内容描述:一个给定序列的子序列是在该序列中删去若干元素后得到的序列。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。例如,若X={A,B,C,B,D,B,A},Y={B,D,C,A,B,A},则序列{B,C,A}是X和Y的一个公共子序列,但它不是X和Y的一个最长公共子序列。序列{B,C,B,A}也是X和Y的一个公共子序列,它的长度为4,而且它是X和Y的一个最长公共子序列,因为X和Y没有长度大于4的公共子序列。 最长公共子序列问题就是给定两个序列X={x1,x2,...xm}和Y={y1,y2,...yn},找出X和Y的一个最长公共子序列。

功能分析:输入包含多组测试数据。第一行为一个整数C,表示有C组测试数据,接下来有C行数据,每组测试数据占1行,它由2个给定序列的字符串组成,两个字符串之间用空格隔开.

输出应该有C行,即每组测试数据的输出占一行,它是计算出的最长公共子序列长度。

例如:输入: 1 输出:4

ABCBDBA BDCABA

2.Minimal m Sums

内容描述:给定n 个整数组成的序列,现在要求将序列分割为m 段,

每段子序列中的数在原序列中连续排列。如何分割才能使这m段子序列的和的最大值达到最小? 编程任务:

给定n 个整数组成的序列,编程计算该序列的最优m 段分割,使m 段子序列的和的最大值达到最小。

功能分析:输入由多组测试数据组成。

每组测试数据输入的第1行中有2个正整数n和m。正整数n是序列的长度;正整数m是分割的段数。接下来的一行中有n个整数。 对应每组输入,输出的每行是计算出的m段子序列的和的最大值的最小值。

例如:输入:1 1 输出:10 10

二、算法过程设计.

1.最长公共子序列

最长公共子序列问题是通过定义数组和指针来寻找两者的公共子序列,实现对问题的解决。

2.Minimal m Sums

这个问题是通过定以一个一维数组和一个二维数组来实现问题的解决。

三、程序调试及结果(附截图).

1.最长公共子序列

2.Minimal m Sums