最大子数组和
2015-09-14 15:04
190 查看
暴力遍历可以解决这个问题,把所有情况遍历一遍,取最大值,但是如果要把时间复杂度控制在O(n),
1.cursum<=0 ,就把cursum的值清零
2.cursum>0,把cursum =cursum + a[i]
3.得打cursum的值再与sum的值比较,如果cursum大,则赋值给sum
4.最后得到最大子数组和sum
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#define NUM 8
int main()
{
int sum,cursum;
int a[NUM];
for(int i=0;i<NUM;i++)
{
scanf("%d",&a[i]);
}
sum = 0;
//cursum = a[0];
//if(cursum) sum=cursum;
cursum = 0;
for(int i=0;i<NUM;i++)
{
if(cursum<=0)
cursum = a[i];
else
{
cursum = cursum+a[i];
}
if(cursum>sum) sum=cursum;
}
printf("%d",sum);
return 0;
}
1.cursum<=0 ,就把cursum的值清零
2.cursum>0,把cursum =cursum + a[i]
3.得打cursum的值再与sum的值比较,如果cursum大,则赋值给sum
4.最后得到最大子数组和sum
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#define NUM 8
int main()
{
int sum,cursum;
int a[NUM];
for(int i=0;i<NUM;i++)
{
scanf("%d",&a[i]);
}
sum = 0;
//cursum = a[0];
//if(cursum) sum=cursum;
cursum = 0;
for(int i=0;i<NUM;i++)
{
if(cursum<=0)
cursum = a[i];
else
{
cursum = cursum+a[i];
}
if(cursum>sum) sum=cursum;
}
printf("%d",sum);
return 0;
}
相关文章推荐
- itoa函数的递归实现(二级指针实现)
- android studio 错误提示错误修复快捷键
- cocos2dx 利用schedule实现长按触发事件功能
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- excel表格数字批量去除前2位的方法
- PHPExcel与ajax结合进行文件下载
- Android ViewPager实现广告无限轮播
- VM虚拟机与宿主机网络互联的方法
- 工厂模式
- 转:java.io.IOException: Exceeeded maximum number of redirects: 5 解决版本
- try...except包含try...finally方法
- 【Linux命令详解】10、查看历史命令―[ history]
- 笔记
- 违背契约精神的酷派 怎么可以如此理直气壮?
- Node.js 4.0 中的 ES 6 特性介绍
- struts2文件下载 <result type="stream">
- cocos2dx 利用CCLabelTTF设置字的水平间距与垂直间距
- 初识ios音频相关类
- Android系统中设置TextView的行间距(非行高)
- 暑假第8周周报