考虑以下 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 中所有元素的总和。答案:(一)
说明:说明:该函数执行以下操作
Y 用于存储迄今为止看到的最大和,Z 用于存储当前和
1) 将 Y 初始化为所有元素的总和
2) 对于每个元素,计算以 arr[i] 开头的所有子数组的总和。将当前和存储在 Z 中。 如果 Z 大于 Y,则更新 Y。
这个问题的测验