欢迎访问 生活随笔!

生活随笔

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

编程问答

整数数组中最大子数组求和02

发布时间:2025/4/16 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 整数数组中最大子数组求和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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。