首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
在数组中,某个数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如,在数组{2,4,1,16,7,5,11,9}中,数对之差的最大值是11,是16减去5的结果。 (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C+
在数组中,某个数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如,在数组{2,4,1,16,7,5,11,9}中,数对之差的最大值是11,是16减去5的结果。 (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C+
admin
2018-07-17
31
问题
在数组中,某个数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如,在数组{2,4,1,16,7,5,11,9}中,数对之差的最大值是11,是16减去5的结果。
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度。
选项
答案
分治法。 把数组分成两个子数组,其实没有必要拿左边子数组中较小的数字去和右边子数组中较大的数字作减法。可以想象,数对之差的最大值只可能是下面三种情况之一:①被减数和减数都在第一个子数组中,即第一个子数组中的数对之差的最大值;②被减数和减数都在第二个子数组中,即第二个子数组中数对之差的最大值;③被减数在第一个子数组中,是第一个子数组的最大值。减数在第二个子数组中,是第二个子数组的最小值。这三个差值的最大者就是整个数组中数对之差的最大值。 在前面提到的三种情况中,得到第一个子数组的最大值和第二子数组的最小值不是一件难事,但如何得到两个子数组中的数对之差的最大值?这其实是原始问题的子问题,可以递归地解决。下面是这种思路的参考代码: int MaxDiff_Solutionl(int numbers[], unsigned length) { if(numbers==NULL||lenath<2) return 0; int max,min; return MaxDiffCore(numbers,numbers+length—1,&max,&min); } int MaxDiffCore(int* start,int* end,int* max,int* min) { if(end==start) { *max=*min=*start; return 0; } int* middle=start+(end—start)/2; int maxLeft,minLeft; int leftDiff=MaxDiffCore(start,middle,&maxLeft,&minLeft); int maxRight,minRight, int rightDiff=MaxDiffCore(middle+1,end,&maxRight,&minRight); int crossDiff=maxLeft—minRight; *max=(maxLeft>maxRight)?maxLeft:maxRight; *min=(minLeft<minRight)?minLeft:minRight; int maxDiff=(leftDiff>rightDiff)?leftDiff:rightDiff; maxDiff=(maxDiff>crossDiff)?maxDiff:crossDiff; return maxDiff; }
解析
转载请注明原文地址:https://kaotiyun.com/show/F5Ri777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
苏联“十四大”、“十五大”后经济建设的核心内容是()
明朝后期,与中国发生联系的欧洲殖民者不包括()。
意大利统一运动的特点,不正确的是()。
世界古代历史上,对东西方文化交流、传播作出突出贡献的是()
“文化大革命”结束后,在纠正“文化大革命”错误的过程中,整个过程受到()的严重阻碍。
下列哪个文件标志着“文化大革命”的发起?()
《凡尔赛条约》中,战胜国以()方式处置德国的全部海外殖民地。
战国初期,上党地区在下列哪一个国家的控制范围之内?()
“二战期间,美国研制了原子弹并用于实践;1946年美国投入的第一台电子计算机最初是用于计算炮弹弹道;德国人研制成功的远程液体火箭是用于空袭英国的。”以上史实说明()。
20世80年代,被称为“机器人王国”的国家是()。
随机试题
脚制动突然失灵时,驾驶人要沉着镇静,握紧转向把,______进行减速。
患者,男,5岁,头皮部初起丘疹色红,灰白色鳞屑成斑,毛发干枯,轻易折断,易于拔落而不疼痛,自觉瘙痒。其诊断是()。
通常我们把()称为第一次产业革命,把()称为第二次产业革命。
下列不属于个人理财业务的相关主体的是()。
根据以下资料回答题。2009年江苏省实现地区生产总值34061.19亿元,比上年增长12.4%。其中,第一产业增加值2201.64亿元,增长4.5%;第二产业增加值18416.13亿元,增长12.5%;第三产业增加值13443.42亿元,增长13.6%。
平素体弱又不轻易锻炼身体的人,从蹲位突然站起来,往往会出现头晕、眼前发黑,甚至晕倒现象,其原因是:
基于题干,回答问题L、M和N三个人中的每一个人都从一街头小贩那里至少买一种食物,该小贩仅售F、H、P和s四种食物。他们根据以下条件来选择他们的食物:(1)每个人最多只买每种食物的一份;(2)若三个人中的某个人买了H,则他不买S;
甲与乙银行签订借款合同,双方约定:借款金额为200万元,借款期限自2008年6月起至2008年12月止。甲同时提供自己的一幢房屋作为抵押,双方另行于2008年7月签订书面抵押合同,并于8月办理了抵押登记。同时,丙为甲的借款提供全额连带保证责任。9月,甲将房
Manytheoriesconcerningthecausesofjuveniledelinquency(crimescommittedbyyoungpeople)focuseitherontheindividualor
A、Itmightincreaseairportcapacity.B、Itmightlowerpropertyvalues.C、Itmightleadtoeffectivemodificationofexistingje
最新回复
(
0
)