日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

《团队开发一(求一个数组的连续的子数组之和的最大值)》

發(fā)布時間:2025/7/14 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《团队开发一(求一个数组的连续的子数组之和的最大值)》 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??《團隊開發(fā)一(求一個數(shù)組的連續(xù)的子數(shù)組之和的最大值)》

(1)設(shè)計思想:一般的,求一個數(shù)組的最大子數(shù)組之和即是按數(shù)組順序依次讓前幾個數(shù)的和與下一個數(shù)進行比較,設(shè)一變量來裝每次比較后的較大的數(shù),依此進行到數(shù)組終端;但是考慮到求的是連續(xù)的子數(shù)組,則應該想到除了在按順序上的連續(xù)外,還得考慮到末端與首端的連續(xù),所以按數(shù)組順序依次求解得到的未必就是連續(xù)的最大的子數(shù)組之和,故此必須在此種情況下也求解出最大子數(shù)組之和,方法即是同時從數(shù)組的兩端依次進行求出各自的最大子數(shù)組之和,然后在相遇前求和后與之前所求的最大子數(shù)組之和依次相比較,取它們中最大的一個作為連續(xù)的最大子數(shù)組之和即可。(因為單獨從一端所求出的最大子數(shù)組之和絕對大于兩邊同時進行的其中一邊所求出的最大字數(shù)之和,故保證了程序的非冗余性。)

(2)出現(xiàn)的問題:

a:用戶輸入的數(shù)組長度與計算機的內(nèi)存空間分配有沖突:例如不允許數(shù)組長度為0,復數(shù),大于與計算機協(xié)調(diào)的內(nèi)存空間或大于數(shù)組范圍為空間;

b:用戶輸入的上下限不符合邏輯要求,例如下限大于上限,下限或上限超過整型數(shù)的范圍;

(3)可能解決的方案:對于以上兩種情況,只需要在用戶與系統(tǒng)界面相交互的時候,設(shè)置相應的測試函數(shù),用戶再跟據(jù)系統(tǒng)的提示一步步進行即可;

(4)源代碼:

//求一個數(shù)組的連續(xù)的最大子數(shù)組之和 //李敏,Mar 22th #include <iostream> #include <time.h> using namespace std; int main() { int n, i, j, k,a[1500],b,c; char mm;do{cout<<"請輸入數(shù)組長度:"<<endl;cin >> n; //檢測輸入數(shù)組長度的合法性 cout<<"請分別輸入兩個數(shù)作為數(shù)組范圍的限制,其中第一個數(shù)為下限,第一個數(shù)為上限:"<<endl;cin>>b>>c;if(n==0||n<0||n>1500||n>c-b){cout<<"輸入的數(shù)組長度不合法,請重新輸入!"<<endl;cin>>n;}//檢測輸入數(shù)組范圍的合法性if(b>c||(b<-2147483648||b==-2147483648)||c==2147483647){cout<<"輸入的數(shù)字不合法,請重新輸入:"<<endl;cin>>b>>c;}srand( (unsigned)time( NULL ) ); //srand()函數(shù)產(chǎn)生一個以當前時間開始的隨機種子for (i=0; i<n; i++) {a[i]=b+rand()%(c-b+1);}cout<<"系統(tǒng)產(chǎn)生的隨機數(shù)為:"<<endl;for (i=0; i<n; i++) {cout<<a[i]<<'\t';}//依次按數(shù)組的順序求出當前子數(shù)組的最大和int t = a[0]; int sum = t; for (k=1; k<n; k++) { t = max(a[k],t+a[k]);sum = max(sum, t); } //考慮到數(shù)組的連續(xù)(即數(shù)組可形象化為一個圈),故分別從數(shù)組首端和末端同時進行以求出兩端還未相遇前的各自的最大子數(shù)組之和int s = a[0]; for (i=1; i<n && s+a[i]>s; i++) s += a[i]; t = a[n]; for (j=n-1; j>=1 && t+a[j]>t; j--) t += a[j]; //依次比較兩端數(shù)組還未相遇前的兩個最大子數(shù)組之和的和與之前按數(shù)組順序求出的最大子數(shù)組之和if (i<j && s+t> sum) sum = s+t; //取兩種情況下的最大字數(shù)組之和即可cout<<"最大字數(shù)組之和為:"<<sum<<endl;cout<<endl;cout<<"*************************************************************"<<endl;cout<<" 繼續(xù)請輸入Y 退出請輸入N "<<endl;cout<<"*************************************************************"<<endl;cin>>mm; }while(mm=='y'||mm=='Y');}

?

(4)實驗截圖:

?

(6)總結(jié):團隊開發(fā)其實是一個很好的開發(fā)模式,我們可以結(jié)對從互相彼此那汲取到有利自己的東西, 以及增強了自己的合作意識,對于一個難以解決的問題,一個人總是孤立無援的,但是如果融合了兩個人的解決措施,即使再難的問題也能夠分而治之,從而解之,故我們應該積極的投入到項目開發(fā)團隊中。

合作團隊:李敏 ? 劉子晗

?

轉(zhuǎn)載于:https://www.cnblogs.com/Twinklelittlestar/p/4374974.html

總結(jié)

以上是生活随笔為你收集整理的《团队开发一(求一个数组的连续的子数组之和的最大值)》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。