1 / 6
文档名称:

算法分析实验四报告.doc

格式:doc   大小:69KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

算法分析实验四报告.doc

上传人:小雄 2021/7/19 文件大小:69 KB

下载得到文件列表

算法分析实验四报告.doc

文档介绍

文档介绍:《算法设计与分析》实验报告
一、 实验内容描述和功能分析.
二、 算法过程设计.
三、 程序调试及结果(附截图).
四、 源代码(附源代码).
一、实验内容描述和功能分析.
最长公共子序列
内容描述:一个给定序列的子序列是在该序列中删去若干元素后得到 的序列。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y 的子序列时,称Z是序列X和Y的公共子序列。例如,若乂=仅,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= {xl, x2,. . . xm} 和Y= {yl, y2,. . . yn),找出X和Y的一个最长公共子序列。
功能分析:输入包含多组测试数据。第一行为一个整数C,表示有C 组测试数据,接下来有C行数据,每组测试数据占1行,它由2个给 定序列的字符串组成,两个字符串之间用空格隔开.
输出应该有C行,即每组测试数据的输出占一行,它是计算出的最 长公共子序列长度。
例如:输入:1 输出:4
ABCBDBA BDCABA
Minimal m Sums
内容•才苗述:给定n个整数组成的序列,现在要求将序列分割为m 段,每段子序列中的数在原序列中连续排列。如何分割才能使这m 段子序列的和的最大值达到最小? 编程任务:
给定n个整数组成的序列,编程计算该序列的最优m段分割,使m 段子序列的和的最大值达到最小。
功能分析:输入由多组测试数据组成。
每组测试数据输入的第1行中有2个正整数n和mo正整数n是序列 的长度;正整数m是分割的段数。接下来的一行中有n个整数。
对应每组输入,输出的每行是计算出的m段子序列的和的最大值的 最小值。
例如:输入:1 1 输出:10
10
二、 算法过程设计.
最长公共子序列
最长公共子序列问题是通过定义数组和指针来寻找两者的公共
子序列,实现对问题的解决。
Minimal m Sums
这个问题是通过定以一个一维数组和一个二维数组来实现问题 的解决。
三、 程序调试及结果(附截图).

2. Minimal m Sums
四、源代码(附源代码).

# include <> # include <>
#define N 100
char a[ N ],
b[N],
str[ N ];
int lcs_len( char *a, char *b, int c[][ N ])
( int m = strlen( a ),
n = strlen( b ),
i,
j;
for( i = 0; i <= m; i++ ) c[ i ][ 0 ] = 0;
for(j = l;j<= n;j++) c[0][j ] = 0;
for( i = 1; i <= m; i++ )
for(j = 1; j <= n; j++ )
if(a[i-l]==