求最大子数组的和
首先定义几个变量以及整形数组,依据输入函数,确定数组的大小,并且输入数组的数值。
然后通过遍历数组的数值大小,比较出并找出子数组的最大值
#include<iostream> using namespace std; #define N 10000 int main() { int num,arr[N]; int sum=0; cout<<"请输入数组元素个数:"; cin>>num; cout<<"请输入数组元素的值:"; for(int i=0;i<num;i++) { cin>>arr[i]; } for(int i=num;i<(2*num-1);i++) { arr[i]=arr[i%num]; } for(int i=0;i<(2*num-1);i++) { cout<<arr[i]<<" "; } cout<<endl; int max=arr[0]; int end,start,cstart; for(int j=0;j<num;j++) { sum=0; for(int i=j;i<j+num;i++) { if(sum<=0) { sum=arr[i]; cstart=i; } else sum=sum+arr[i]; if(sum>max) { max=sum; start=cstart; end=i; } } } cout<<"子数组和的最大值为:"<<max<<endl; return 0; }