跟着姥姥學數據結構(1) -- 最大子列和

    大學畢業已經兩年了,兩年的工作中發現自己曾經很差的計算機基礎部分還是沒有得到鍛鍊,就在中國大學MOOC上面參加了數據結構的課程。在博客中會把課後作業中的一些題目寫出來。

    今天要說的題目是求一個數列的最大子列和,有一個N個整數的序列{A1,A2,A3,A4...AN},求函數f(x,y)=max{0, Ai+Ai+1+...Aj (1<=i<j<=N)}的最大值.


這題使用在線處理的算法,複雜度最低,爲o(n);

代碼如下:

#include <iostream>

using namespace std;

int a[100010];

int main()
{
	int N;
	while (cin >> N)
	{
		int thisSum = 0, maxSum = 0;
		for (int i = 0; i < N; i++)
		{
			cin >> a[i];
			thisSum += a[i];
			if (thisSum > maxSum)
				maxSum = thisSum;
			else if (thisSum < 0)
				thisSum = 0;
		}
		cout << maxSum << endl;
	}
    return 0;
}

發佈了46 篇原創文章 · 獲贊 23 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章