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

#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;
}		

  

猜你喜欢

转载自www.cnblogs.com/huangrb/p/9784124.html
今日推荐