一、實驗題目
題目:返回乙個整數陣列中最大子陣列的和。
要求:輸入乙個整形陣列,陣列裡有整數也有負數。
陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。
如果陣列a[0]
……a[j-1]
首尾相鄰,允許
a[i-1]
,……a[n-1]
,a[0]
……a[j-1]
之和最大。
同時返回最大子陣列的位置。
求所有子陣列的和的最大值。要求時間複雜度為o(n
).二、實驗思路
下面我用乙個例子來說明一下我們的解題思路:
例如,我輸入的陣列是
第一次迴圈求得5,和
max比較大小,然後把5+(
-3)和
max比較大小,然後是5+(
-3)+2和
max比較大小,最後是5+(
-3)+2+(
-1)和
max比較大小,把最大值給
max,接下來把5移到
-1的後面,再用同樣的方法求第二次迴圈的最大值,只不過這次開始於
-3。依次類推,求出最大的子陣列。
由於我和小夥伴程式設計不是太好,所以返回最大子陣列的位置這乙個要求沒有實現。
三、源**
1四、執行結果//信1201-2班 司新紅 萬彤
2 #include"
stdafx.h
"3 #include "
iostream"4
using
namespace
std;56
/*主函式*/7
intmain()820
int max=a[0
];21
int s=0;//
定義求和後的元素
22for(int i=0;i)
2332
}33 a[length+i]=a[i]; //
每次將已經計算過的數放到最後34}
35 cout<
36 cout<
最大子陣列的和為:
"<
37 cout
3839
return0;
40 }
五、心得體會
這次的程式,在我剛剛看到的時候,簡直一點思路都沒有,所以最後採取的課堂上乙個同學的思路,在程式設計的過程中我們還遇到了許多的問題,比如不知道如何把第乙個數字移到陣列的最後面,後來經過問同學,和我們自己的研究終於得到了解決。雖然我和我的小夥伴都不太會程式設計,但是我們還是努力完成了這個題目,也許這就是一點點的進步吧,在以後的過程中,我們會再接再厲,爭取能夠獨立完成乙個程式。
附上我和我的小夥伴的**:
求整數陣列 環形陣列中最大子陣列的和
一 整數陣列 1 題目要求 a 輸入乙個整數陣列,陣列裡有正數也有負數。b 陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。c 求所有子陣列的和的最大值。2 思路構想 求陣列中的乙個元素 a 和上乙個元素 b 的和 c 將 a 和 c 進行比較,若 c a 則用 c 代替 a 的值,...
返回乙個環狀整數陣列中最大子陣列之和
題目 返回乙個整數陣列中最大子陣列的和。要求 結對程式設計要求 分析 相比於上一次的任務,這次的不同在於,陣列是環狀的,求出所有可能子陣列之和的最大值,並確定該子陣列所在的位置。這時就會有兩種想法 a想到環狀,就想到了資料結構中的迴圈鍊錶,balabala。b其實也不難,只是加入環狀之後,每次搜尋子...
返回乙個整數陣列中最大子陣列的和。
該題的意思是 如果乙個陣列為 1 5 3 19 5 3 第乙個數之後若是該數與前乙個數之和大於該數那麼將這個和替換概數 即5 1 5,5不變 而5 3 5 則將三替換為8以此類推 當乙個數與前乙個數之和再次小於這個數時,這個數為乙個下乙個的最小陣列,如5 3 19 11 5 5 則5為下乙個最小陣列...