日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

结对开发——求最大值

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结对开发——求最大值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、題目:

? ? ? 返回一個整數數組中最大子數組的和。

  要求:

  1.輸入一個整形數組,數組里有正數也有負數。

  2.數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。

  3.求所有子數組的和的最大值。要求時間復雜度為O(n)。

二、設計思路

  1.數組num[]長度已確定是N,將數組中字數組的和放到數組sum[]中;

  2.sum[0]=num[0],sum[1]=num[0]+num[1],sum[2]=num[0]+num[1]+num[2]……;

? ?  sum[N]=num[1],sum[N+1]=num[1]+num[2]……如此循環,直至所有自己的和全部存進??數組sum中;

  3.然后求出數組sum中的最大值,再輸出結果;

? ? ? 4.單獨判斷一些特殊的容易計算的情況,比如全是負數、全是正數、只有一個正數。這樣能有效地提高程序的效率。

三、源代碼

1 // 求和.cpp : Defines the entry point for the console application. 2 // 2015/3/18 16:12 袁佩佩 于海洋 信1201-1班 3 4 #include "stdafx.h" 5 #include"iostream.h" 6 #define SIZE 5 //數組的個數 7 #define MAXSIZE 100 //子集個數的最大值 8 void CaculateSum(int sum[],int length,int num[])//計算數組中各個子集的和 9 { 10 int j=0; 11 for(int i=0;i<SIZE;i++) 12 { 13 for(int k=i;k<SIZE;k++) 14 { 15 if(i==k) 16 { 17 sum[j]+=num[k]; 18 } 19 else 20 { 21 sum[j]=sum[j-1]+num[k]; 22 } 23 j++; 24 } 25 } 26 } 27 //求所有情況的個數 28 int GetAcc() 29 { 30 int acc=0; 31 for(int i=1;i<=SIZE;i++) 32 { 33 acc+=i; 34 } 35 return acc; 36 } 37 //找出數組中的最大值,length是b[]中的個數 38 int GetMax(int b[],int length) 39 { 40 int max=b[0]; 41 for(int i=0;i<length;i++) 42 { 43 if(max<b[i]) 44 { 45 max=b[i]; 46 } 47 } 48 return max; 49 } 50 int main() 51 { 52 int num[SIZE],sum[MAXSIZE],max=0,acc; 53 int count[2]={0,0}; //num[num]是要求的整數count[2]中是負數和正數的個數 54 cout<<"請輸入"<<SIZE<<"個整數:"; 55 for(int i=0;i<SIZE;i++) //計算數組中正數和負數的個數 56 { 57 cin>>num[i]; 58 if(num[i]<0) 59 count[0]++; //負數的個數 60 else 61 count[1]++; //正數 62 } 63 acc=GetAcc(); 64 for(i=0;i<acc;i++) 65 { 66 sum[i]=0; 67 } 68 if(count[0]==0) //若全是正數的話 69 { 70 for(int i=0;i<SIZE;i++) 71 { 72 max+=num[i]; 73 } 74 } 75 else if((count[1]==0)||(count[0]==1)) //若全是負數或者有一個正數 76 { 77 max=GetMax(num,SIZE); 78 } 79 else //其他情況 80 { 81 CaculateSum(sum,acc,num); 82 max=GetMax(sum,acc); 83 } 84 cout<<"最大子集的和是:"<<max<<endl; 85 return 0; 86 }

四、結果截圖

五、心得體會

? 我和于同學之前就經常合作,所以這次搭檔還算順利。我倆上課的時候就討論出了這個題目的大體思路,今天我們又對算法的具體實現進行了討論和調試。

? 俗話說:“男女搭配,干活不累。”我比較細心,他比較有執行力。于同學可以帶起整個編程創作的氣氛,我也很快進入狀態,能夠及時準確的發現他的錯誤并快速改正。整個過程效率比自己編程時要高。

? 其實一開始我根據我和搭檔確定的思路寫出了算法,但是運行時有錯并且特別復雜。我們調試了幾次都沒能成功,于是他就換了種思考方式,很快寫了新的算法。經過幾次調試之后,程序成功運行了。這一點我挺欣賞他的,因為它發現這條路走不通或特別難走時,可以馬上改變路徑正確的到達目的地。

六、有圖有真相

? 請無視我那無神的雙目,和那油油的頭發...

?

轉載于:https://www.cnblogs.com/JJJanepp/p/4346942.html

總結

以上是生活随笔為你收集整理的结对开发——求最大值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。