题目:返回一个整数数组中最大子数组的和。(要求程序必须能处理1000 个元素)
2015-03-30 16:16
302 查看
1、题目:返回一个整数数组中最大子数组的和。
2、要求:
要求程序必须能处理1000 个元素;
每个元素是int32 类型的;
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
3、设计思路:
将数组大小定义为1000,对于每个元素定义为int32类型,我们取数的时候对其进行了乘4294967296,使数组内的元素可以越界。
4、程序代码:
6、运行截图:
无溢出时
7、实验感想:
可以看出程序有溢出时,运行结果会使每个元素显示为0,程序出错;而无溢出时,由于我们取数个数太多(10000个),是程序的运算时间增长很多,这让我们意识到,在进行大量数据处理的时候,所用算法的时间复杂度的重要性。
8、真相图:
2、要求:
要求程序必须能处理1000 个元素;
每个元素是int32 类型的;
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
3、设计思路:
将数组大小定义为1000,对于每个元素定义为int32类型,我们取数的时候对其进行了乘4294967296,使数组内的元素可以越界。
4、程序代码:
#include <iostream> #include<stdlib.h> #include<time.h> using namespace std; int main() { int i; int a[10000]; int max = 0; int b = 0; srand(time(NULL)); cout<<"数组为:"<<endl; for (i = 0; i<10000; i++) { a[i] = rand()*4294967296 ; } for (i = 0; i<10000; i++) { cout << a[i] << '\t'; } cout << endl; for (i = 0; i < 10000; i++) { b += a[i]; if (b < 0) b = 0; if (b > max) max = b; } if (max == 0) { max = a[0]; for (i = 0; i < 10000; i++) { if (max < a[i]) { max = a[i]; } } } cout <<"最大子数组为:"<< max << endl; system("pause"); return 0; }
6、运行截图:
无溢出时
7、实验感想:
可以看出程序有溢出时,运行结果会使每个元素显示为0,程序出错;而无溢出时,由于我们取数个数太多(10000个),是程序的运算时间增长很多,这让我们意识到,在进行大量数据处理的时候,所用算法的时间复杂度的重要性。
8、真相图:
相关文章推荐
- 给定一个数组,元素都是正整数,要求返回这些元素所组成的最大数
- 题目:给一个排序好的整数数组A,请写一个函数,输入是数组A和一个整数x,返回数组A中值小于x的最大元素的索引值
- 编写一个C#程序,要求从键盘输入10个数存放在数组中,分别求出最大数和最小数存放在第一第二个元素里
- 【1】 设一个长度为10的整型数组,  0)要求每个元素的值通过scanf输入,输入完成后,  1)请顺序输出这些整数,  2)请倒序输出这些整数,  3)输出这些数中的最大值,最小值
- 题目:返回一个二维整数数组中最大子数组的和。
- 题目:返回一个整数数组中最大子数组的和。
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值
- 题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n)。
- 题目:返回一个整数数组中最大子数组的和。
- 题目:返回一个整数数组中最大子数组的和
- 题目:返回一个整数数组中最大子数组的和
- 题目是:写一个函数,返回一个数组中所有元素被第一个元素除的结果
- 实验8 编写程序,输出一张九九乘法口诀表。要求必须将乘积放入一个二维数组中,再输出该数组,程序运行效果如下
- 编写一个使用数组类模板Array对数组进行排序、求最大值和求元素和的程序,并采用相关数据进行测试。
- 实验九指针1、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- 实验9 指针1 1、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- 有一个数组内放10个整数要求找出最小的数&它的下标然后将它&数组中最前面的元素对换
- 从三个排好序的整数数组中分别选一个元素,使得这三个元素的最大差最小
- 算法习题45:对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一;;;一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 实验9(1)程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。