您的位置:首页 > 其它

数组、求和最大的子数组

2015-03-23 17:23 176 查看
一、要求

1、定义整型数组、数组长度已知、数组元素随机生成、要求有正有负。

2、求出元素之和最大的子数组,要求元素要连续

3、时间复杂度为O(n)

二、思路

将和最大的子数组放在一个数组中,进行元素的叠加,记录最大值,类似于递归的思想,等加到第i+1次出现最大值减少的的时候,第i次的结果即为最大值。

三、代码

#include<iostream> using namespace std;

#define N 7

void fun(int *p, int n,int &max)

{

int j,sum =0;

for (j = n; j >= 0; j--)

{

sum += p[j];

if (max < sum)

{

max = sum;

}

}

}

void main()

{

int a
, i;

cout << "请随机产生" << N << "个数组元素" << endl;

for (i = 0; i < N; i++)

a[i] = rand() % 80 -40;

for (i = 0; i < N; i++)

cout << a[i] << " ";

int max = a[0];

for (i = 0; i < N; i++) fun(a, i, max);

cout << "最大的数:" << max << endl;

}

四、截图



四、总结

利用这次编程的机会,熟悉了函数的书写,数组的复习应用等等知识点,当然最大的收获,是这个程序的算法。

psp表格

时间记录日志

学习时间3.21上午在图书馆查阅资料复习相关知识
实现时间3.21下午在宿舍进行程序的编译 30分钟完成
缺陷记录日志

日期编号引入阶段排除阶段修改过程描述
3.211输入生成查阅资料对宏定义的使用有些错误的地方
3.212输入生成直接修改输入的时候,因为太注重对宏定义 因而在句尾忘记加上了分号
3.213输入生成直接修改在输入中文的时候转换了输入法,结果后来输入的时候没有改回来 导致错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: