整数数组中最大子数组求和02
生活随笔
收集整理的這篇文章主要介紹了
整数数组中最大子数组求和02
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設計思路:
在“整數數組中最大子數組求和01”的基礎上完成本次實驗。
本次實驗的關鍵在于如何判斷結束。
經設計,程序結束條件有兩種:1.截取部分有重復;2.循環完整兩次。
滿足其中任一條件則循環結束。
代碼:
1 //20160327 2 #include<iostream> 3 #include<algorithm> 4 using namespace std; 5 6 int main() 7 { 8 int arr[100]; 9 int NUM = 0; 10 int MAXSUM = 0; 11 int MINNUMend = 0; 12 int MINSUM = 0; 13 int SUM = 0; 14 int jump = 0; 15 int start = -1; 16 for (; NUM < 100; NUM++) 17 { 18 cin >> arr[NUM]; 19 if (getchar() == '\n') 20 { 21 break; 22 } 23 } 24 if (NUM == 100) 25 { 26 NUM = 99; 27 } 28 for (int i = 0;; i < NUM ? i++ : i = 0) 29 { 30 if (i == 0) 31 { 32 jump += 1; 33 if (jump == 3) 34 { 35 break; 36 } 37 } 38 if (start == i) 39 { 40 break; 41 } 42 SUM = min(SUM + arr[i], arr[i]); 43 if (MINSUM > SUM) 44 { 45 MINNUMend = i; 46 } 47 MINSUM = min(SUM, MINSUM); 48 if (start == -1) 49 { 50 start = 0; 51 } 52 if (SUM >= 0) 53 { 54 start = i; 55 } 56 } 57 SUM = 0; 58 jump = 0; 59 start = -1; 60 for (int i = MINNUMend;; i < NUM ? i++ : i = 0) 61 { 62 if (i == MINNUMend) 63 { 64 jump += 1; 65 if (jump == 3) 66 { 67 break; 68 } 69 } 70 if (start == i) 71 { 72 break; 73 } 74 SUM = max(SUM + arr[i], arr[i]); 75 MAXSUM = max(SUM, MAXSUM); 76 if (start == -1) 77 { 78 start = MINNUMend; 79 } 80 if (SUM <= 0) 81 { 82 start = i; 83 } 84 } 85 cout << "最大和:" << MAXSUM << endl; 86 return 0; 87 } View Code測試截圖:
?
此次結對編程隊友為 李娜。
http://www.cnblogs.com/linanil/p/5323599.html
轉載于:https://www.cnblogs.com/ning-JML/p/5326332.html
總結
以上是生活随笔為你收集整理的整数数组中最大子数组求和02的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android新手入门2016(15)-
- 下一篇: gradle编译出错:Execution