阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。【说明】设有整数数组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)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[i]开始依次将元素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”。