数组、求和最大的子数组
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;
}
四、截图
![](http://images.cnitblog.com/blog2015/721181/201503/231703248174824.png)
四、总结
利用这次编程的机会,熟悉了函数的书写,数组的复习应用等等知识点,当然最大的收获,是这个程序的算法。
psp表格
时间记录日志
缺陷记录日志
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;
}
四、截图
![](http://images.cnitblog.com/blog2015/721181/201503/231703248174824.png)
四、总结
利用这次编程的机会,熟悉了函数的书写,数组的复习应用等等知识点,当然最大的收获,是这个程序的算法。
psp表格
时间记录日志
学习时间 | 3.21上午在图书馆查阅资料复习相关知识 |
实现时间 | 3.21下午在宿舍进行程序的编译 30分钟完成 |
日期 | 编号 | 引入阶段 | 排除阶段 | 修改过程 | 描述 | |
3.21 | 1 | 输入 | 生成 | 查阅资料 | 对宏定义的使用有些错误的地方 | |
3.21 | 2 | 输入 | 生成 | 直接修改 | 输入的时候,因为太注重对宏定义 因而在句尾忘记加上了分号 | |
3.21 | 3 | 输入 | 生成 | 直接修改 | 在输入中文的时候转换了输入法,结果后来输入的时候没有改回来 导致错误。 | |
相关文章推荐
- 循环数组,求和最大子数组
- 求和最大的子数组
- 输入一个整形数组,数组中有正数也有负数,求该数组中所以子数组和的最大值
- “数组最大值求和”分析报告
- 结对开发Ⅳ——一维数组求和最大的子数组(大数溢出)
- 环形数组求最大子数组
- iOS小常识 数组求和、最大,最小、平均值
- 结对开发Ⅵ——循环二维数组求和最大的子数组
- 最大和子数组 && 最大有序子数组
- 长度为n的数组有正有负,找出元素之和最大的子数组
- 环形二维子数组求最大子数组
- 一个数组,有正有负,不改变顺序的情况下,求和最大的最长子序列
- 求数值型数组的子数组和最大值
- 求二维整形数组的子数组的和最大的子数组
- js数组求和、最大、最小值
- 结对开发-- 一维数组求和最大的子数组 (大数溢出)
- 给定任意数组获取任意连续的项求和的最大值,并输出新的数组
- java笔试题:数组查找,查找和为最大的子数组
- 数组求和的艺术-一个数组最大连续字数组之和
- 最大字数组求和改进!