您的位置:首页 > 其它

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

2016-04-06 18:24 197 查看
题目要求:输入一个整型数组,数组里有正数也有负数

数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和

求所有子数组的和的最大值,要求时间复杂度为O(n)

设计思想

求出所有连续子数组的和,然后进行比较。用array[0]来作为max的初始值.数组里有正数有负数,当与负数相加,如果和小于等于0,最大值等于未加负数之前的和,与正数相加则等于加正数之后的和。

源代码

#include<iostream>
using namespace std;

int main()
{
int i,n,sum=0;
int array[1000];
cout<<"请输入数组的长度:"<<endl;
cin>>n;
int max=array[0];
cout<<"请输入数组内的数"<<endl;
for(i=0;i<n;i++)
{
cin>>array[i];
}
for(i=0;i<n;i++)
{
if(sum<=0)
{
sum=array[i];
}
else
{
sum=sum+array[i];
}
if(sum>max)
{
max=sum;
}
}
cout<<"子数组和的最大值为"<<max<<endl;
return 0;
}


结果截图:





总结

编程要善于思考,有了思路再去写,免得一直处于写了再改的模式,重在分析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: