求最大子数组(结对开发)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求最大子数组(结对开发)相关的知识,希望对你有一定的参考价值。

结对伙伴:

刘元柱

博客名:紫叶之风

链接:http://www.cnblogs.com/qwer112/

设计思想:

1:随机输入一个数组

2:用动态规划求出该数组的最大子数组的和

3:定义一个结构体,当找到该最大子数组时,记录该数组的开始和结束

4:输出

结对开发的一瞬间:

技术分享

程序源代码:

 1 //动态规划 
 2 //2016/3/23
 3 #include "iostream"
 4 using namespace std;
 5 
 6 #define N 100
 7 
 8 typedef struct data
 9 {
10     int kaishi;
11     int jieshu;
12     int value;
13 }data;
14 
15 
16 int main()
17 {
18     int  num = 0;
19     int A[N];
20     cout << "任意输入一个数组:";
21     while (true)
22     {
23         cin >> A[num];
24         num++;
25         if (getchar() == \\n)
26         {
27             break;
28         }
29     }
30     data Start;
31     data All;
32     //初始化
33     Start.kaishi = All.kaishi = 0;
34     Start.jieshu = All.jieshu = 0;
35     Start.value = All.value = A[0];
36 
37     //动态规划,求出最小子数组的和以及最小子数组开始和结束的位置
38     for (int i = 1; i < num; i++)  //从前向后遍历
39     {
40         if (A[i] > Start.value + A[i])
41         {
42             Start.value = A[i];
43             Start.kaishi = i;
44             Start.jieshu = i;
45         }
46         else
47         {
48             Start.value += A[i];
49             Start.jieshu = i;
50         }
51         if (Start.value > All.value)
52         {
53             All = Start;
54         }
55     }
56     
57 
58     cout << "和最大的最小子数组为:" << endl << "从第" << All.kaishi + 1 << "个数开始,第" << All.jieshu+ 1 << "个数结束" << endl << "和为:" << All.value << endl;//输出
59     return 0;
60 
61 
62 }

运行截图:

技术分享

技术分享

技术分享

技术分享

项目计划总结:

技术分享

时间记录日志:

技术分享

缺陷记录日志:

技术分享

 

以上是关于求最大子数组(结对开发)的主要内容,如果未能解决你的问题,请参考以下文章

求最大子数组二(结对开发)

求一维数组的最大子数组1(结对开发)

求最大联通子数组的和(结对开发)

二维数组最大子数组(结对开发)

二维数组最大子数组(结对开发)

结对开发——返回整数数组最大子数组和2