码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-03-29 10:38:06      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

一、题目要求

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");
	}
}  
三、运行截图
技术分享技术分享
四、实验总结
本次实验主要目的在于测试本程序健壮性,使用了大数据进行测试,如果溢出则进行报错。

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

标签:

原文地址:http://www.cnblogs.com/huangxiaofei/p/4375229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!