结对编程返回整数数组中最大的子数组
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; }
以上是关于结对编程返回整数数组中最大的子数组的主要内容,如果未能解决你的问题,请参考以下文章