您的位置:首页 > 其它

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

2016-03-26 13:56 260 查看
结对伙伴:

刘元柱

博客名:紫叶之风

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

设计思想:

1:随机输入一个数组

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

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

4:输出

结对开发的一瞬间:



程序源代码

//动态规划
//2016/3/23
#include "iostream"
using namespace std;

#define N 100

typedef struct data
{
int kaishi;
int jieshu;
int value;
}data;

int main()
{
int  num = 0;
int A
;
cout << "任意输入一个数组:";
while (true)
{
cin >> A[num];
num++;
if (getchar() == '\n')
{
break;
}
}
data Start;
data All;
//初始化
Start.kaishi = All.kaishi = 0;
Start.jieshu = All.jieshu = 0;
Start.value = All.value = A[0];

//动态规划,求出最小子数组的和以及最小子数组开始和结束的位置
for (int i = 1; i < num; i++)  //从前向后遍历
{
if (A[i] > Start.value + A[i])
{
Start.value = A[i];
Start.kaishi = i;
Start.jieshu = i;
}
else
{
Start.value += A[i];
Start.jieshu = i;
}
if (Start.value > All.value)
{
All = Start;
}
}

cout << "和最大的最小子数组为:" << endl << "从第" << All.kaishi + 1 << "个数开始,第" << All.jieshu+ 1 << "个数结束" << endl << "和为:" << All.value << endl;//输出
return 0;

}


运行截图:









项目计划总结:



时间记录日志:



缺陷记录日志:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: