標籤:
一、團隊成員:
檀威,陳志利
二、項目名:
求一個數組中連續最大子數組之和
三、我們的設計思路:
設sum[i]為以第i個元素結尾且和最大的連續子數組。對於元素i,所有以它前面的元素結尾的子數組的長度都已經求得,那麼以第i個元素結尾且它們之和最大的連續子數組要麼是以第i-1個元素結尾且它們之和最大的連續子數組加上這個元素,要麼是只包含第i個元素,即sum[i] = max(sum[i-1] + arr[i], arr[i])。可以通過判斷sum[i-1] + arr[i]是否大於arr[i]來做選擇,而這實際上等價於判斷sum[i-1]是否大於0。由此我和陳志利按照這個思路編程如下:
四、代碼:
#include<iostream.h>void main(){while(1){int length;int *arr=new int[length];cout<<"請輸入該數組長度:";cin>>length;cout<<"請輸入該數組:";for(int i=0;i<length;i++){cin>>arr[i];}int result = arr[0];int sum = arr[0];for(i=1;i<length;i++){if (sum > 0){sum += arr[i];}else{sum =arr[i];}if (sum >result)result = sum;}cout<<"該數組中最大連續子數組之和是:"<<result<<endl;cout<<"----------------------------------------"<<endl;}}
五、運行及測試:
測試了當全是負數,全是正數,全是0,有正有負及各種特殊情況等,都運行正確。
六、總結:
雖然這次不是第一次結對做項目,但是過程中明顯感覺解決問題的時候比一個人考慮的周到全面,效率提高很多,相互學習配合比較順利。
七、工作合照
軟體工程結對開發之求一個數組中連續最大子數組之和