结对开发4----最大子数组(大数溢出)
結(jié)對(duì)成員:范德一,趙永恒
一.題目:
返回一個(gè)整數(shù)數(shù)組中最大子數(shù)組的和。
二.要求:
要求程序必須能處理1000?個(gè)元素;
每個(gè)元素是int32?類型的;
輸入一個(gè)整形數(shù)組,數(shù)組里有正數(shù)也有負(fù)數(shù)。
數(shù)組中連續(xù)的一個(gè)或多個(gè)整數(shù)組成一個(gè)子數(shù)組,每個(gè)子數(shù)組都有一個(gè)和。
求所有子數(shù)組的和的最大值。
三.設(shè)計(jì)思路
???? 在上一次的實(shí)驗(yàn)中,我們?cè)O(shè)置的數(shù)組的個(gè)數(shù)能夠很好的進(jìn)行擴(kuò)展,所以對(duì)于第一個(gè)要求處理1000個(gè)元素比較容易實(shí)現(xiàn);對(duì)于第二個(gè)要求,我們主要是想確定最大的數(shù)到底有多大,即什么時(shí)候會(huì)發(fā)生溢出的問(wèn)題,當(dāng)問(wèn)題出現(xiàn)時(shí)程序怎么處理,通過(guò)查閱資料,我們最后確定了程序能夠處理的最大數(shù)的取值,然后通過(guò)輸出語(yǔ)句提示數(shù)組溢出。
四.源代碼
1 #include<iostream.h> 2 3 #include<time.h> 4 5 #include<stdlib.h> 6 7 8 9 int main() 10 11 { 12 13 14 15 srand((unsigned)time(NULL)); 16 17 18 19 int a[1000]; 20 21 int m; //m是每組個(gè)數(shù) 22 23 int *sum=new int[1000]; 24 25 cout<<"*********************************"<<endl; 26 27 for(int i=0;i<1000;i++) 28 29 { 30 31 int b; 32 33 b=rand()%2; 34 35 switch (b) 36 37 { 38 39 case 0: 40 41 a[i]=rand()*350; 42 43 break; 44 45 case 1: 46 47 a[i]=-rand()*100; 48 49 break; 50 51 } 52 53 cout<<a[i]<<" "; 54 55 if((i%10)==9) 56 57 cout<<endl; //每行10個(gè)輸出,換行 58 59 60 61 } 62 63 64 65 cout<<"*********************************"<<endl; 66 67 int he=0; 68 69 for(m=1;m<1001;m++) 70 71 { 72 73 int temp=0; 74 75 for(int n=0;n<m;n++) 76 77 { 78 79 temp=temp+a[n]; 80 81 } 82 83 for(int k=0;k<=(1000-m);k++) 84 85 { 86 87 sum[k]=0; 88 89 for(int j=k;j<(k+m);j++) //a[k]是每組第一個(gè)數(shù) 90 91 { 92 93 sum[k]=sum[k]+a[j]; 94 95 } 96 97 if(sum[k]>temp) 98 99 { 100 101 temp=sum[k]; 102 103 } 104 105 } 106 107 if(temp>he) 108 109 { 110 111 he=temp; 112 113 } 114 115 } 116 117 if(he>2100000000) 118 119 { 120 121 cout<<"數(shù)組溢出!"<<endl; 122 123 } 124 125 else 126 127 { 128 129 cout<<"最大子數(shù)組的和為: "<<he<<endl; 130 131 } 132 133 cout<<"*********************************"<<endl; 134 135 return 0; 136 137 }?
五.運(yùn)行截圖
六、感想
??? 這次實(shí)驗(yàn)在隨機(jī)出現(xiàn)數(shù)的那里我們停留了很長(zhǎng)時(shí)間,主要是不知道rand函數(shù)也是有取值范圍的。在接組的開發(fā)中,我們都有一點(diǎn)自己的想法。最后總結(jié)在了一起,尤其是在編程的過(guò)程中,我們誰(shuí)都想往上寫一點(diǎn),一個(gè)程序總是在加入自己的設(shè)計(jì)思路和代碼的風(fēng)格。我覺得一個(gè)團(tuán)隊(duì)還是應(yīng)該把風(fēng)格和規(guī)范盡量的一致,才能讓團(tuán)隊(duì)更好的工作起來(lái)。
附:
轉(zhuǎn)載于:https://www.cnblogs.com/fan123/p/4376537.html
總結(jié)
以上是生活随笔為你收集整理的结对开发4----最大子数组(大数溢出)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jQuery插件实战之fullcalen
- 下一篇: java中HashMap详解