最大子段和问题实验报告_第1页
最大子段和问题实验报告_第2页
最大子段和问题实验报告_第3页
最大子段和问题实验报告_第4页
最大子段和问题实验报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验四实验四 最大子段和问题最大子段和问题 1 1 实验目的实验目的 1 掌握动态规划的设计思想并能熟练运用 2 理解这样一个观点 同样的问题可以用不同的方法解决 一个好的算法是反复努力和 重新修正的结果 2 2 实验要求实验要求 1 分别用蛮力法 分治法和动态规划法设计最大子段和问题的算法 2 比较不同算法的时间性能 3 给出测试数据 写出程序文档 3 3 实验设备和软件环境实验设备和软件环境 操作系统 Windows 7 64x 开发工具 Visual Studio 2013 4 4 实验步骤实验步骤 以下实验数据都是以数组 a 2 11 4 13 5 2 为例子 蛮力法蛮力法 蛮力法是首先通过两个 for 循环去求出所有子段的值 然后通过 if 语句查找出 maxsum 返回子序列的最大子段和 分治法分治法 1 划分 按照平衡子问题的原则 将序列 a1 a2 an 划分成长度相同的两个 子序列 a1 a2 an 2 和 an 2 1 an 2 求解子问题 对与划分阶段的情况 和 可递归求解 情况 需要分别计算 s1 max 1 i n 2 s2 max n 2 1 j0 时 b j b j 1 a j 2 当 b j 1 0 时 b j a j 然后做递归操作求出最大子段和 5 5 实验结果实验结果 蛮力法蛮力法 include include using namespace std int manlifa int a int x int i j sum 0 maxsum 0 for i 0 i x i for j i 1 j sum sum a i if sum maxsum maxsum sum return maxsum int main int y sum int a 20 11 4 13 5 2 int c sizeof a sizeof int sum manlifa a c cout y return 0 分治法分治法 include include using namespace std int MaxSum int a int left int right int sum 0 midSum 0 leftSum 0 rightSum 0 int center s1 s2 lefts rights if left right sum a left else center left right 2 leftSum MaxSum a left center rightSum MaxSum a center 1 right s1 0 lefts 0 for int i center i left i lefts a i if lefts s1 s1 lefts s2 0 rights 0 for int j center 1 j s2 s2 rights midSum s1 s2 if midSum leftSum sum leftSum else sum midSum if sum rightSum sum rightSum return sum int main int sum int a 20 11 4 14 5 2 sum1 MaxSum a 0 5 cout sum1 endl int j n int b 100 cout n cout 请输入序列子段 for j 0 j b j int sum i sum MaxSum b 0 5 cout sum i return 0 动态规划法动态规划法 include using namespace std int MaxSum int n int a int sum 0 b 0 for int i 1 i 0 b a i else b a i if b sum sum b return sum int main int k int a 2 11 4 13 5 2 for int i 0 i 6 i cout a i cout endl cout 数组a的最大连续子段和为 MaxSum 6 a k return 0 6 6 讨论和分析讨论和分析 在一开始做最大子段问题的实验的时候 对于蛮力法和分治法的理解还是可以的 但是对 于动态规划法的理解还不是那么明确透彻 通过网上的一些解释和结合自己书本上的知识 对动态规划法得到了进一步的理解 接下来是三种算法时间性能的比较 蛮力法 时间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论