结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)
生活随笔
收集整理的這篇文章主要介紹了
结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、題目及題目要求
題目:返回一個整數數組中最大子數組的和。
要求:
(1)輸入一個整形數組,數組里有正數也有負數。
(2)數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。
(3)如果數組A[0]……A[j-1]首尾相鄰,允許A[i-1], …… A[n-1], A[0]……A[j-1]之和最大。
(4)同時返回最大子數組的位置。
二、設計思路
這次的編程開發是基于上次的返回一個整數數組中最大子數組的和( http://www.cnblogs.com/a1397240667/p/5322471.html),我和我的搭檔開始了認真的討論,再結合課堂上的同學討論,如何能在一維數組原有的基礎上,加上首尾相連這個條件,最后得到的方法大概思想是:遍歷數組里面的每一個數將第一個數變為最后一個數,這樣又變成了一個新的一維數組,輸出每個數組的最大子數組和,然后比較每個輸出的和,找出最大的數。
三、代碼
1 /*2016.3.24 weilihua fengyutong*/ 2 #include <iostream> 3 #include<ctime> 4 #define Num 10000 5 using namespace std; 6 int DTGH_Sum(int a[],int n) //動態規劃法求子段和函數 7 { 8 int sum = 0; 9 int *b = (int *) malloc(n * sizeof(int)); //動態為數組分配空間 10 b[0] = a[0]; 11 for(int i = 1; i < n; i++) 12 { 13 if(b[i-1] > 0) 14 b[i] = b[i - 1] + a[i]; 15 else 16 b[i] = a[i]; 17 } 18 for(int j = 0; j < n; j++) 19 { 20 if(b[j] > sum) 21 sum = b[j]; 22 } 23 delete []b; //釋放內存 24 return sum; 25 } 26 int main() 27 { int temp,b; 28 int sum=0; 29 int i; 30 int a1,a2; 31 int a[Num]; 32 int length=0; 33 while (length==NULL||length == 0)//如果數組長度為空或零則請重新輸入 34 { 35 cout<<"請輸入數組長度:"; 36 cin>>length; 37 } 38 cout<<"生成隨機序列: "<<endl; 39 srand((unsigned)time(NULL)); 40 for(i=0;i<length;i++)//產生隨機序列 41 { 42 if(rand()%2==0) 43 { 44 a[i]=rand()%100; 45 } 46 else 47 { 48 a[i]=(-1)*rand()%100; 49 } 50 cout<<a[i]<<" "; 51 } 52 cout<<endl; 53 cout<<"此首尾相連的數組中最大子數組的和有以下幾種可能:"<<endl; 54 cout<<"第1種排列方式:"<<endl; 55 for( i=0;i<length;i++) 56 { 57 cout<<a[i]<<" "; 58 } 59 cout<<"最大子數組和為:"<<DTGH_Sum(a,length)<<endl; 60 a1=DTGH_Sum(a,length); 61 for(b=1;b<length;b++) 62 { 63 temp=a[0]; 64 for(i=1;i<=length;i++) 65 { 66 a[i-1]=a[i]; //將第一個數變為最后一個數 67 68 } 69 a[length-1]=temp; 70 cout<<"第"<<b+1<<"種排列方式:"<<endl; 71 for( i=0;i<length;i++) 72 { 73 cout<<a[i]<<" "; 74 } 75 cout<<"最大子數組和為:"<<DTGH_Sum(a,length)<<endl; 76 if(DTGH_Sum(a,length)>=sum) 77 { 78 sum=DTGH_Sum(a,length); 79 } 80 } 81 a2=sum; 82 cout<<endl; 83 if(a1>=a2) 84 { 85 cout<<"綜上,最大的子數組和為:"<<a1<<endl; 86 } 87 else 88 { 89 cout<<"綜上,最大的子數組和為:"<<a2<<endl; 90 } 91 return 0; 92 }四、運行截圖
當數組長度為1000時:
五、項目計劃日志
?
| 日期&&任務 | 聽課 | 編寫程序 | 閱讀相關書籍 | 網上查找資料 | ? 日總計 |
| 周一 | 100 | ? | 30 | 30 | 160 |
| 周二 | ? | 120 | 30 | 30 | 180 |
| 周三 | ? | 30 | 30 | 10 | 70 |
| 周四 | 100 | 20 | ?30 | ? | 150 |
| 周五 | ? | 120? | ?30 | 30 | 180 |
| 周六 | ? | 45 | 30 | 10 | 85 |
| 周日 | ? | ?200 | ?30 | 10? | ?240 |
| 周總計 | 200 | 535 | 180 | 110 | 1065 |
?
時間記錄日志
3/21
| 日期 | 開始時間 | 結束時間 | 中斷時間 | 凈時間 | 活動 | 備注 |
| 3/21 | 14:00 | 15:50 | 10 | 100 | 聽課 | 軟件工程上課 |
| ? | 21:04 | 21:? 34 | 0 | 30 | 閱讀書籍 | 《構建之法》 |
| ? | 22:10 | 22: 40 | 0? | 30 | 網上查找資料 | ? |
| ?3/22 | ?18:00 | ?18:30 | ?0 | ?30 | ?閱讀書籍 | 《構建之法》? |
| ? | 19:00 | 21:30 | 20 | 120 | 編寫程序 | 結對開發- 子數組之和 |
| ? | 22:??15 | 22:? 45 | 0? | 30 | 網上查找資料 | ? |
| 3/23 | 19:? 25 | 20: 00 | 5 | 30 | 編寫程序 | 結對開發- 子數組之和 |
| ? | 22:00 | 22: 30 | 0 | 30 | 閱讀書籍 | 《構建之法》 |
| ? | 22:40 | 22: 50 | 0 | 10 | 查找資料 | ? |
| 3/24 | 14:00 | 15:? 50 | 10 | 100 | 上課 | 軟件工程上課 |
| ? | 18:26 | 18: 50 | 4? | 20 | 編寫程序 | 結對開發- 子數組之和 |
| ? | ?22:00 | ?22:30 | ?0 | ?30 | ?閱讀書籍 | ?《構建之法》 |
| 3/25 | 14:? 00 | 16:??20 | 20 | 120 | ?編寫程序 | 結對開發- 子數組之和 |
| ? | 11:23 | 12: 00 | 7 | 30 | 網上查找資料 | ? |
| ? | ?21:00 | ?21:30 | ?0 | ?30 | ?閱讀書籍 | ?《構建之法》 |
| 3/26 | 7: 00 | ? 7: 30 | 0 | 30 | 閱讀書籍 | 閱讀《構建之法》 |
| ? | 10: 00 | 11: 00 | 15 | 45 | 編寫程序 | 結對開發- 子數組之和 |
| ? | 9:? 45 | ? 9: 55 | ?0 | 10 | 網上查找資料 | ? |
| 3/27 | 8:20 | 12:00 | 20 | 200 | 編寫程序 | 結對開發- 子數組之和 |
| ? | 21:00 | 21:10 | 0 | 10 | 網上查找資料 | ? |
| ? | 21:30 | 22:00 | 0 | 30 | 閱讀書籍 | 《構建之法》 |
?
缺陷記錄日志
?
| 日期 | 編號 | 類型 | 引入階段 | 排除階段 | 修復時間 | 備注 |
| 3/24 | 1 | 20 | 編碼 | 編譯 | 4 | 實參與形參類型對應問題 |
| 3/24 | 2 | 20 | 編碼 | 編譯 | 1 | 申請了動態空間未釋放 |
| 3/25 | 3? | 20? | 編碼? | 編譯? | 7 | 當數組長度為0時,無法正常跳出 |
| 3/27 | 4 | 20 | 編碼 | 編譯 | 20 | 邏輯有問題,會突然中止 |
| 3/27 | 5 | 20 | 編碼 | 編譯 | 1 | 變量未初始化 |
?
同組伙伴博客:http://www.cnblogs.com/qizhonh/
工作照:
?
轉載于:https://www.cnblogs.com/a1397240667/p/5323248.html
總結
以上是生活随笔為你收集整理的结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input点击事件不能用_用js简单写一
- 下一篇: 只需要几行代码就可以轻松实现OCR图片转