下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、递归与分治策略最大子段和问题1、问题的描述给定由n个整数组成的序列(al,a2,an),求该序列形如g的子段和的最大值。分治算法就是将一个问题分解成若干个小问题,对若干个小问题分别求解,最后 在合并起来。最大子段问题可以分成三种情况1.数组al-n(bp数组前1至n个元素)的最大子段和aln/2的最大子段相同2数组al-n(w数组前1至n个元素)的最大子段和an/2+l-n的最大子段相同3.数组al-n的最大子段和是由al-n/2和an/2+ln结合而成,求解方法为 则分别求出n/2imaxsak和 max sak,然后将两个值相加即得到此种情况下的数组最大子段和0<二iv二n/2 k=
2、i n/2+l<=iv二n k二 n/2最后分别求出三种情况的最大子段和,再比较三个子段和,最大的那个即为数组 的最大字段和。2、代码及注释include <stdio. h>include <stdlib. h>#include <time h>#define max_n 20 int max3(int, int, int):int maxsubarrayar)s(int );int maxsubarrtiy (ini , int, int);int main()int numsmax_n ;/定义一个最大长度为20的数组 int i;stand (
3、time (0); /随机数产生器printf("array: n");/产生max n个随机数for( i = 0; i < max_n; i卄)随机数产工的规则 numsi = (int) (rand() % (max_n * 2) - max_n);printf(*%dt*, nums订);printf("n");/调用递归函数printf (z,the max subsequen sum is %d n,z, mcixsubarrayans (nums); return 0; /求三个数中的最大值int max3(int a, int b,
4、 int c) if(a > b)return a > c ? a : c; elsereturn b > c ? b : c;/采用分治策略int maxsubarray (int nums, int left, int right)int maxleftsum, maxrightsum;/左右边的最人和int maxleftbordersum, maxrightbordersum;/含中间边界的左右部分最大和int leftbordersum, rightbordersum;/含中间边界的左右部分当前和/递归到最后的基本悄况if(left = right)if(numsl
5、eft > 0)return nu:elsereturn 0;递归求左右部分最人值int mid = (left + right) / 2, i;maxleftsum 二 maxsubarray(nums, left, mid); maxrightsum 二 mcixsubarray (nums, mid + 1, right):求含中间边界的左部分的最大值maxleftbordersum = 0, leftbordersum = 0;for(i = mid; i >= left; i)leftbordersum +二 numsi;if(leftbordersum > mti
6、xleftbordersum)maxleftbordersum = leftbordersum;求含中间边界的右部分的最大值maxrightbordersum 二 0, rightbordersum 二 0;for(i = mid + 1; i <= right; i+) rightbordersum +二 numsi;i f(ri ghtbordersum > maxrightbordcrsum)maxrightbordersum = rightbordersum;/返回三者中的最大值return max3(maxleftsum, maxrightsum, maxleftbordersum + maxrightbordersum): int mcixsubarrayans (int nums)return maxsubarray(nums, 0, max_n 一 1);3、运行结果产生20个平均分布在0左右的随机故8418-1-10916-10-7-414-1?-418-7131325最大子段和为44.press any key
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏省南京市玄武区双校联考中考数学一模试卷
- 联合国日主题阅读课件
- 世界艾滋病日:消除歧视关爱患者课件
- 国际宽容日:学会宽容与理解课件
- 2025年贵州专升本历史考试试题及答案
- 侯马花艺设计提升试卷
- 2026济南历城二中高一英语分班考试真题含答案
- 2025年贵州省理科专升本考试真题及参考答案
- 2026年“十八项医疗核心制度”培训考试真题卷附答案
- 2026成都八中高一入学英语分班考试真题含答案
- 某工程建筑施工应急救援预案
- 3.2.1 分数除以整数 教学课件2026-2027学年人教版数学六年级上册
- 译林版七年级英语上册知识清单
- 2026秋冀少版新教材七年级上册生物学每课知识点清单
- 2026年石家庄市桥西区街道办人员招聘考试参考试题及答案详解
- 中国重症患者液体管理专家共识(2026版)
- 2026年福建省中考历史试卷(含答案及解析)
- 2026年6月英语四级真题(第一套)附答案
- 燃料电池发动机YHT30版用户使用手册
- 2026年全国翻译专业资格考试(CATTI)三级口译英语口译综合能力真题
- 农业政策学(第二版) 课件 第5章 农业科技政策
评论
0/150
提交评论