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

Posted huangrb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对编程返回整数数组中最大的子数组相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<ctime>
using namespace std;
int main()
{
	cout<<"数1601-2 20163980 
黄瑞波"<<endl;;
	int m,n=0,star=0,end=0;
	cout<<"1.手动输入数组。
2.随机生成数组。请选择功能:";//选择自己输入或者随机生成
	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;
}		

  

以上是关于结对编程返回整数数组中最大的子数组的主要内容,如果未能解决你的问题,请参考以下文章

返回一个整数数组中最大子数组的和。(二人结对编程)

返回一个整数数组中最大子数组的和。(二人结对编程)

课堂练习;返回一个二维数组中最大子数组的和

课堂练习:返回一个二维数组中最大子数组的和

求一维数组的最大子数组1(结对开发)

返回一个二维整数数组中最大子数组的和(二人结对)