3月24号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和二

一、题目要求

1.1要求程序必须能处理1000 个元素;

1.2每个元素是int32 类型的;

1.3输入一个整形数组,数组里有正数也有负数。

1.4数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

1.5求所有子数组的和的最大值。要求时间复杂度为O(n)。

二、源代码

#include<iostream>
#include<time.h>
#include<conio.h>
#define N 100000
using namespace std;
void RandIn(int IntNum,int A[])
{
	cout<<"整数内容"<<endl;
	for(int i=0;i<IntNum;i++)
	{
		A[i]=rand()-rand();
		cout<<A[i];
		if(i%5==4)
			cout<<endl;
		else
			cout<<‘\t‘;
	}
}
void SelMax(int IntNum,int A[],	int &sum)
{
	int buffer=0;//引入一个常量记录累加的和
	for(int j=0;j<IntNum;j++)
	{
		buffer+=A[j];
		if(buffer<0)//如果累加和小于0,buffer重新初始化为0
		{
			buffer=0;
		}
		if(sum<buffer)//sum始终记录下存在的最大和
		{
			sum=buffer;
		}
	}
}
void main()
{

	int IntNum;
	int A[N];
	int q=0;
	while(q==0)
	{
		int sum=0;
		srand((unsigned)time(NULL));
		cout<<"请输入整数的个数:";
		cin>>IntNum;
		RandIn(IntNum,A);
		SelMax(IntNum,A,sum);
		cout<<endl;
		cout<<sum<<endl;
		cout<<"是否继续测试(输入0则继续否则停止)";
		cin>>q;
		system("cls");
	}
}  

三、运行截图

四、实验总结

本次实验主要目的在于测试本程序健壮性,使用了大数据进行测试,如果溢出则进行报错。

时间: 2024-10-18 03:15:58

3月24号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和二的相关文章

软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)

题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整型数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为O(n): 一.设计思想 1.首先随机产生一个数组,数组长度可自行输入,该数组里有正数也有负数. 2.从数组中第一个元素a[0]开始,依次计算a[0].a[0]+a[1].a[0]+a[1]+...+a[i]的值,即从a[0]开始的每个子数组的和,取出最大值. 3.再从数组第二个元素a[1]开始,依

结对开发-返回一个整数数组的最大子数组的和

日期&&任务 听课 编写程序 阅读相关书籍 网上查找资料   日总计 周一 100   10 30 140 周二   120   30 150 周三   30 10 10 50 周四 100 20     120 周五   120    30 150 周六   45 60 10 155 周日           周总计 200 335 80 110 765 时间记录日志 3/21 日期 开始时间 结束时间 中断时间 净时间 活动 备注 3/21 14:00 15:50 10 100 听课

结对开发——返回一个整数数组中最大子数组的和

一.题目要求 1.输入一个整型数组,数组里有正数也有负数. 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 1.首先随机产生一个数组,该数组里有正数也有负数. 2.从数组中第一个元素a[0]开始,依次计算a[0].a[0]+a[1].a[0]+a[1]+...+a[i]的值,即从a[0]开始的每个子数组的和,取出最大值. 3.再从数组第二个元素a[1]开始,依次往后计算每个子数组的和,取出最大值.依次循

3月27号周五课堂练习:结对开发----返回一个整数数组中最大子数组的和三

一.题目要求 1.1输入一个整形数组,数组里有正数也有负数. 1.2数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.3如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大. 1.4同时返回最大子数组的位置. 1.5求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 三.源代码 #include<iostream> #include<time.h> #include<conio

课堂练习----一个整数数组中最大子数组的和(1)

本次的题目是:返回一个整数数组中最大子数组的和 要求:1.输入一个整形数组,数组里有正数也有负数.2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.3.求所有子数组的和的最大值.要求时间复杂度为O(n) 分析: 当我们求出的累加和加上一个正数的时候,整个累加和就会增加,当我们的累加和加上一个负数的时候,整个累加和就会减小,我们用一个变量max保存累加和的最大值,另外,我们的累加和如果为负数的时候,如果继续加数不把累加和清零的话,那么整个和就会减小,因此如果累加和为负,就把累加和

课堂练习----一个整数数组中最大子数组的和(2)

本次的题目是:返回一个整数数组中最大子数组的和 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]……A[j-1]首尾相邻,允许A[i-1],…… A[n-1],A[0]……A[j-1]之和最大. 同时返回最大子数组的位置. 求所有子数组的和的最大值. 分析: 这个题目是在上个题目的基础的加上数组首位相连,并该数组最大子数组的和,实现方法就是把环变成直线的方法,通过for循环,在每次循环中,把数组中的元素作为数组的

结对开发之《返回一个二维整数数组中最大子数组的和》

一.题目要求 题目:返回一个二维整数数组中最大子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求: 两人结对完成编程任务. 一人主要负责程序分析,代码编程. 一人负责代码复审和代码测试计划.发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照).(截止到周四4月9日24:00) 二.编程思路 我们的思路比较简单,采用的是将

课堂练习求环整数组中最大子数组之和

设计思路:之前还有一个课堂练习,是用户输入一个整数组,求其中最大子数组之和,我借鉴的其他同学的代码,仅在此基础上修改的.运用try,catch使得用户不必在输入数组之前输入数组的长度,但是需要一个除整数以外的数来结尾.一共使用了3个循环,运用一个循环得出每个数组中最大子数组之和的最大值,一个是用来计算最大子数组之和,最后一个用来实现数组的前移.第一个循环中包着另外两个循环.总的来说,是在之前课堂练习的基础上增加了将一个数组中的每个数做一次最前面的数,从中求出最大值. 程序代码: 1 import

结对编程之求首尾相连数组中最大子数组的和

1.题目: 返回一个整数数组中最大子数组的和. 2.要求: 输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大.同时返回最大子数组的位置.求所有子数组的和的最大值.要求时间复杂度为O(n). 3.设计思想: 分情况讨论最大子数组可能出现的情况,第一种为正常情况,没有超过数组范围,第二种则比较复杂,要用到环的一部分元素,分而求出两