考虑以下C函数,其中size是数组E中元素的数量:
函数MyX返回的值是
int MyX(int *E, unsigned int size)
{
int Y = 0;
int Z;
int i, j, k;
for(i = 0; i < size; i++)
Y = Y + E[i];
for(i = 0; i < size; i++)
for(j = i; j < size; j++)
{
Z = 0;
for(k = i; k <= j; k++)
Z = Z + E[k];
if (Z > Y)
Y = Z;
}
return Y;
}
(A)数组E的任何子数组中元素的最大可能和。
(B)数组E的任何子数组中的最大元素。
(C)数组E的所有可能子数组中最大元素的总和
(D)数组E中所有元素的总和。答案: (A)
说明:说明:该函数如下
Y用于存储到目前为止看到的最大和,Z用于存储当前总和
1)初始化Y为所有元素的总和
2)对于每个元素,计算以arr [i]开头的所有子数组的总和。将当前总和存储在Z中。如果Z大于Y,则更新Y。
这个问题的测验