一道有趣的问题
在别处看到这么个问题,以下函数,输入Input为一个数组,length为这个数组的长度,x, y, z是输出。问这个函数的功能是什么,是否存在逻辑错误?
我自己编译了跑了跑,感觉是求出这个数组任意个连续的元素的和的最大值. 感觉有点莫名其妙啊。
void DiscoverSomethingInteresting(int *Input, int length)
{
int i, j, k;
int w;
int x, y, z;
Begin:
z = -2147483648; // MAX negative int
for (i=1; i<=length; i++)
{
for (j=0; j<= length - i; j++)
{
w = 0;
for (k=0; k<=i-1; k++)
{
w = w + Input[j+k];
}
printf("\n");
if (w > z)
{
z = w;
x = j;
y = j+i-1;
}
}
printf("\n");
}
return;
}
[解决办法]
其实要看你的代码很简单
我只要在每次执行的循环的地方加入一条代码
把产生的结果放到文件中去就OK了