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

结对编程返回整数数组中最大的子数组

时间:2018-10-13 21:39:58      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:网络   个数   lse   for   最大子数组   自己   存储   iostream   stream   

#include<iostream>
#include<ctime>
using namespace std;
int main()
{
	cout<<"数1601-2 20163980 \n黄瑞波"<<endl;;
	int m,n=0,star=0,end=0;
	cout<<"1.手动输入数组。\n2.随机生成数组。请选择功能:";//选择自己输入或者随机生成
	cin>>m;
	switch(m)
	{
		case 1:{
		int *p=new int[n];//开辟为n的存储空间
	cout<<"请输入数组的长度:";
	cin>>n;
	if(n<0)
	{
	cout<<"输入的数组长度有误,请重新输入!"<<endl;//判断数据有效性
	return 0;
	}
	cout<<"输入一个"<<n<<"维整型数组:";
	//以下算法代码参考与网络。
	for(int i=0;i<n;i++)
	{
		cin>>p[i];
	}
	int sum=p[0];
   int max_sum=p[0];
   for(int i=1;i<n;i++)
   {   
       if(sum>0)    //是否为正数
       { 
           sum=sum+p[i];  //是正数,做和。
          if(sum>max_sum) // 并判断是否为最大,是让其赋值给max_sum。
            { 
                max_sum=sum;
                end=i;
            }
       }
       else 
       { 
           sum=p[i];  //是负数,将第i+1个数的值赋值给和值sum
              if(sum>max_sum)//并判断是否为最大,是让其赋值给max_sum。
              {    
                 max_sum=sum;
                 star=i;
                 end=i;
              }
       }
   }
   cout<<"最大子数组位置为第"<<star+1<<"个到第"<<end+1<<"个"<<endl;
   cout<<"最大子数组和为"<<max_sum<<endl;
};break;
		case 2:
			{
				int *p=new int[n];
				cout<<"请输入数组的长度:";
		cin>>n;
		if(n<0)
		{
		cout<<"输入的数组长度有误,请重新输入!"<<endl;
		return 0;
		}cout<<"随机数组为:";
		for(int i=0;i<n;i++)
	{
		p[i]=-rand()%4000+2000;
		cout<<p[i]<<" ";
	}
		cout<<endl;
		int sum=p[0];
   int max_sum=p[0];
   for(int i=1;i<n;i++)
   {   
       if(sum>0)    //判断是否为正数
       { 
           sum=sum+p[i];  //是正数,做和。
          if(sum>max_sum) // 并判断是否为最大,是让其赋值给max_sum。
            { 
                max_sum=sum;
                end=i;
            }
       }
       else 
       { 
           sum=p[i];  //是负数,将第i+1个数的值赋值给和值sum
              if(sum>max_sum)//并判断是否为最大,是让其赋值给max_sum。
              {    
                 max_sum=sum;
                 star=i;
                 end=i;
              }
       }
   }
   cout<<"最大子数组位置为:第"<<star+1<<"个到第"<<end+1<<"个"<<endl;
   cout<<"最大子数组和为:"<<max_sum<<endl;
			};break;
	}
	  return 0;
}		

  

结对编程返回整数数组中最大的子数组

标签:网络   个数   lse   for   最大子数组   自己   存储   iostream   stream   

原文地址:https://www.cnblogs.com/huangrb/p/9784124.html

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