求最大子数组(结对开发)
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 }
运行截图:
项目计划总结:
时间记录日志:
缺陷记录日志:
以上是关于求最大子数组(结对开发)的主要内容,如果未能解决你的问题,请参考以下文章