- 25
- 0
- 约5.04千字
- 约 9页
- 2021-08-29 发布于山东
- 举报
第 PAGE \* Arabic 1 页
算法设计与分析
实验指导书
邵阳学院信息工程系
2010年3月
实验1 最大子段和(分治法)
一、实验内容
运用分治法,编制程序求解如下问题:
给定由n个整数(可能有负整数)组成的序列(a1,a2,…,an),最大子段和问题要求该序列形如的最大值(1=i=j=n),当序列中所有整数均为负整数时,其最大子段和为0。
二、实验要求
1.进一步掌握递归算法的设计思想以及递归程序的调式技术;
2.理解这样一个观点,分治与递归经常同时应用在算法设计之中。
三、主要仪器设备
装有TC或Visual C++的PC机
四、实验步骤
1.算法分析
最大子段和问题的分治策略是:
(1)划分:按照平衡子问题的原则,将序列(a1, a2, …, an)划分成长度相同的两个子序列(a1, …, an/2)和(an/2+1, …, an),则会出现以下三种情况:
① a1, …, an的最大子段和=a1, …, an/2的最大子段和;
② a1, …, an的最大子段和=an/2+1, …, a的最大子段和;
③ a1, …, an的最大子段和=,且
(2)求解子问题:对于划分阶段的情况①和②可递归求解,情况③需要分别计算:
,
则s1+s2为情况③的最大子段和。
(3)合并:比较在划分阶段的三种情况下的最大子段和,取三者之中的较大者为原问题的解。
分析算
原创力文档

文档评论(0)