阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。 【说明】 设有整数数组A[1:N](N>1),其元素有正有负。下面的流程图在该数组中寻找连续排列的若干个元素,使其和达到最大值,并输出其起始下标K、元素个数L以及最大的和值M。 例如,

admin2017-11-28  26

问题 阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。
【说明】
设有整数数组A[1:N](N>1),其元素有正有负。下面的流程图在该数组中寻找连续排列的若干个元素,使其和达到最大值,并输出其起始下标K、元素个数L以及最大的和值M。
例如,若数组元素依次为3,一6,2,4,一2,3,一1,则输出k=3,L=4,M=7。该流程图中考察了A[1:N]中所有从下标i到下标j(j≥i)的各元素之和S,并动态地
记录其最大值M。
【流程图】

注:循环开始框内应给出循环控制变量的初值和终值,默认递增值为1,格式为:
循环控制变量=初值,终值

选项

答案(1)i,N或i,N,l或等效形式 (2)S+A[j]或等效形式 (3)S (4)j—i+1或等效形式 (5)S

解析 本题考查程序员对算法流程进行设计的能力。
既然要考察整数数组A[1:N]中所有从下标i到下标j(j≥i)的各元素之和S,因此需要执行对i和j的双重循环。显然,对i的外循环应从l到N进行。在确定了i后,可以从A开始依次将元素A[j]累加到S中。所以,对j的内循环应从i开始直到N,以保持(j≥i)。因此空(1)处应填入“i,N”,而空(2)处应填写“S+A[j]”。
为了在内循环中累计计算若干个连续元素之和S,在i循环之后,j循环之前,首先应将S清0。
由于已知数组元素中有正数,所以S的最大值M肯定是正数,因此,流程图一开始就应将M赋值0,以后,每当计算出一个S,就应将其与M比较。当S>M时,就应将S的值送入M(替代原来的值)。因此,空(3)处和(5)处都应填写“S”。此时,从下标i到j求和各元素的开始下标K为i,个数L为j—i+1,因此,空(4)处应填写“j-i+1”。
转载请注明原文地址:https://jikaoti.com/ti/YHW7FFFM
0

最新回复(0)