结对项目——最大子数组
求數(shù)組中最大子數(shù)組的和
一、程序要求
1、返回一個整數(shù)數(shù)組中最大子數(shù)組的和;
2、輸入一個整數(shù)數(shù)組,數(shù)組中有正數(shù)也有負(fù)數(shù);
3、數(shù)組中連續(xù)的一個或多個整數(shù)組成一個子數(shù)組,每個子數(shù)組都有一個和;
4、求所有子數(shù)組的和的最大值,要求時間復(fù)雜度為O(n);
二、程序設(shè)計思想
????數(shù)組的長度和各個元素由鍵盤鍵入。先將各元素累加,每加一個數(shù),看結(jié)果是否為0,若為0,重置結(jié)果,并且結(jié)果與最大子數(shù)組和(簡稱最大和)比較,若有更大的和,就保存較大的結(jié)果到最大和中。若最大和與結(jié)果的值均為0,說明數(shù)組為負(fù)數(shù)數(shù)組,最大子數(shù)組即為最大元素。
三、源程序
//李俏、張瑩熒,2016.3.21 //求整數(shù)數(shù)組的最大子數(shù)組的和 #include<iostream> using namespace std;int main() {int arrlength,i;int j;int maxsum=0,sum=0;int arr[100];cout<<"請輸入數(shù)組長度:";cin>>arrlength;if(arr==NULL||arrlength==0){//exit(1);return 0;}cout<<"請輸入數(shù)組元素:";for(i=0;i<arrlength;i++){cin>>arr[i];}maxsum=0;sum=0;for(i=0;i<arrlength;i++){sum=sum+arr[i];//累加if(sum<0) //當(dāng)前和小于0,重置為0 {sum=0;}if(sum>maxsum) // 當(dāng)前和大于最大和,則重置最大和 {maxsum=sum;}}if(maxsum==0) //maxsum=0,說明數(shù)組中的數(shù)值均為負(fù)數(shù) {maxsum=arr[0];for(i=1;i<arrlength;i++){if(arr[i]>maxsum)//求出負(fù)數(shù)數(shù)組的最大值 {maxsum=arr[i];}}}cout<<"最大子數(shù)組的和為:"<<maxsum<<endl;return 0;//for(i=0;i<arrlength;i++)//{// sum=0;// for(j=0;j<arrlength;j++)// {// sum += arr[j];// if(sum<0) //當(dāng)前和小于0,重置為0// {// sum=0;// }// if(sum>maxsum)// {// maxsum=sum;// }// }//}//cout<<"最大子數(shù)組的和為:"<<maxsum<<endl;//return 0; }?
四、結(jié)果截圖
五、項目計劃日志
周活動總結(jié)表??
姓名:李俏????????? 日期:2016年3月19日
| 日期?? 任務(wù) | 聽課? | 編寫程序 | 閱讀課本 | 準(zhǔn)備考試 | ? | ? | 日總計 |
| 周日(3.20) | ? | 30 | 30 | ? | ? | ? | ?60 |
| 周一 | 120 | 30 | 30 | ? | ? | ? | 180 |
| 周二 | ? | 30 | 30 | ? | ? | ? | 60 |
| 周三 | ? | 30 | 30 | ? | ? | ? | 60 |
| 周四 | 120 | ? | 30 | ? | ? | ? | 150 |
| 周五 | ? | 180 | 30 | ? | ? | ? | 210 |
| 周六 | ? | 60 | 30 | ? | ? | ? | 120 |
| 周總結(jié) | 240 | 360 | 210 | ? | ? | ? | 810 |
?
?
?
?
?
?
?
?
?
?
?
?
?
六、時間記錄表:
學(xué)生:???李 俏?????????????????????????日期?:2016年3月12日?
教師:???王建民?????????????? ?????????課程?:軟件工程??????
| 日期 | 開始時間 | 結(jié)束時間 | 中斷時間 | 凈時間 | 活動 | 備注 |
| ?3.21 | 16:30 | 17:00 | 無 | 30 | 編寫程序? | 作業(yè)? |
| ? | 20:10 | 20:40 | 無 | 30 | 閱讀 | 作業(yè) |
| ?3.22 | 19:10 | 19:50 | 10 | 30 | 編寫程序 | 作業(yè) |
| ? | 20:00 | 20:30? | 無 | 30 | 閱讀 | ?作業(yè) |
| ?3.23 | 14:30 | 15:30 | 30min | 30 | 編寫程序 | ?作業(yè) |
| ? | 20:00 | 20:30? | 無 | 30 | 閱讀 | ?作業(yè) |
| 3.24 | 18:50 | 19:20 | 無 | 30 | 編寫程序 | 作業(yè) |
| ? | 20:00 | 20:30 | 無 | 30 | 閱讀 | ?作業(yè) |
| ?3.25 | 13:20 | 18:00 | 100? | 180 | 編寫程序 | ?作業(yè) |
| ? | 21:10 | 21:40 | 無 | 30 | 閱讀 | ?作業(yè) |
| ?3.26 | 12:00 | ?13:30 | ?30min | 60 | 編寫程序 | ?作業(yè) |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
七、缺陷記錄日志:
學(xué)生????????李俏,張瑩熒????
日期 ? ??? 2016年3月25日? ?
教員????????? 王建民???????
程序號? ??2??
| 日期? | 編號 | 類型 | 引入階段 | 排除階段 | 修復(fù)時間 | 修復(fù)缺陷 |
| ?3.24? | 1 | 計算 | 設(shè)計 | 編譯 | 10min | ? |
| 描述:?計算不出結(jié)果。 | ||||||
| ?3.24? | 2 | 結(jié)果 | 編碼 | 編譯 | 5min | ? |
| 描述:?沒有考慮純負(fù)數(shù)數(shù)組。 | ||||||
| ?3.24? | 3 | 算法 | 編碼 | 查資料、問同學(xué) | 30min | ? |
| 描述:時間復(fù)雜度不符合要求。 | ||||||
?
?
?
?
?
?
?
?
?
?
?
八、工作照片?
小伙伴:張瑩熒(http://www.cnblogs.com/zhyying/)
轉(zhuǎn)載于:https://www.cnblogs.com/Aliqiao/p/5321866.html
總結(jié)
以上是生活随笔為你收集整理的结对项目——最大子数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 帆软报表(多sheet)自定义分页查询
- 下一篇: 两端对齐布局与text-align:ju