我使用Kadane的算法编写"找到最大子阵列"(http://en.wikipedia.org/wiki/Maximum_subarray_problem),如下所示,但我的教授说,"我实际上是不确定你的MSA程序做了什么,但肯定找不到最大的子阵列。" 请告诉我我做错了什么。
int findMaximumSubarray(int array[], int length){
int max1=array[0];
int max2=array[0];
int i;
for (i=0; i<length; i++){
max1 = findMax(array[i],max1+array[i]);
max2 = findMax(max2,max1);
}
return max2;
}
int findMax(int x, int y) {
if(x>y) return x;
else return y;
}
答案 0 :(得分:0)
这几乎是正确的,但想想在第一次循环迭代中max1
会发生什么。没错,我不会只是告诉你这个错误是什么。