博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法笔记--最大子段和问题
阅读量:5797 次
发布时间:2019-06-18

本文共 1482 字,大约阅读时间需要 4 分钟。

算法笔记

1.非连续最大子段和

如果不全为负数,最大子段和所有大于等于0的元素的和;如果全为负数,最大子段和为最大的负数。

2.连续最大子段和

①无长度限制:

例题:

代码:

#include
using namespace std;#define ll long longint main(){ ios::sync_with_stdio(false); int n; ll ans=1ll<<63,now=0; cin>>n; while(n--) { int a; cin>>a; now+=a; if(now>ans)ans=now; if(now<0)now=0; } cout<
<
View Code

代码:

#include
using namespace std;#define ll long long#define pb push_back#define mem(a,b) memset(a,b,sizeof(a))const int INF=0x3f3f3f3f;int main(){ ios::sync_with_stdio(false); cin.tie(0); int T,a,n; while(cin>>T) { for(int i=1;i<=T;i++) { cin>>n; int l,r,_l=1,mx=-INF,sum=0; for(int j=1;j<=n;j++) { cin>>a; sum+=a; if(sum>mx) { mx=sum; l=_l; r=j; } if(sum<0) { sum=0; _l=j+1; } } if(i-1!=0)cout<
View Code

②有长度限制(如最大连续奇数字段和)

代码:

#include
using namespace std;const int N=1e5+5;int a[N];int main(){ int t; cin>>t; while(t--) { int n; cin>>n; for(int i=0;i
>a[i]; int sum=a[0],ans=a[0]; for(int i=1;i
View Code

 

转载于:https://www.cnblogs.com/widsom/p/7127628.html

你可能感兴趣的文章
FireEye:雪人行动针对美国海外战争退伍军人网站
查看>>
java.util.date 转为 java.sql.date
查看>>
oracle使用dblink跨库查询的例子
查看>>
Squid 反向代理服务器配置
查看>>
情深意伤
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
几个有意思的接口
查看>>
iOS中ARC下Block的循环引用和内存管理
查看>>
python面向对象(C3算法)(六)
查看>>
cull/clip distance example
查看>>
新的开始
查看>>
MYSQL运维管理-mysql数据库介绍1
查看>>
display: none和visibility: hidden的区别
查看>>
Java 简单图片截取
查看>>
去除无用的文件查找路径
查看>>
Django函数——url()
查看>>
JQuery UI - draggable(转)
查看>>