最大子列和問題

2021-08-19 05:55:56 字數 890 閱讀 9194

問題如下:

演算法每次向右累加一次,就進行處理,如果當前的子列和小於0,則再繼續向右加也不會是最大值,所以將其拋棄,從下乙個數當做果起點從新開始累加。如果當前子列和大於過去的最大子列和,更新之。

**如下:

#include #include int main() 

} return maxsum;

}

如果將問題增加為還要輸出該子列的第乙個和最後乙個元素:

要返回該子列的開始和結束元素,首要要定位開始和結束的位置。返回結束位置還是比較容易的,我們知道,每當更新最大和時,便對應可能的結束下標,這個時候,只要將結束位置記錄下來即可。當確定最大值後再往回累加便可找到開始位置。

#include #include int maxsubseqsum(int k, int * arr, int *firstnum, int *lastnum);

int main()

} int tempsum = 0;

for(i=*lastnum; i>=0; --i)

} return maxsum;

}

但測試結果還是不能全部通過

最大子列和問題

給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入格式 輸入第1行給出正整數 k 100000 第2行給出k個整數,其間以空格分隔。輸出格式...

最大子列和問題

給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入格式 輸入第1行給出正整數 k 100000 第2行給出k個整數,其間以空格分隔。輸出格式...

最大子列和問題

給出乙個序列,求出最大子列和。演算法一 long maxsum int a,int n return maxsum 這是乙個窮舉的演算法,有三個巢狀的for迴圈,時間複雜度為o n 3 在計算的時候有很多不必要的重複項,例如當i 0,j 3時,和的計算為 a 1 a 2 a 3 當i 0,j 4時,...