当前位置: 首页 > wzjs >正文

电信100m光纤做网站代发关键词包收录

电信100m光纤做网站,代发关键词包收录,做网站百度,wordpress赞赏模板、 审题: 本题需要我们找到给定数组中子段之和和最大的sum值 思路: 方法一:暴力解法 我们可以使用双层for循环,第一层循环负责遍历每一个数组元素,然后分别以他们为子段起点,第二层循环从第一层循环的索引开…

审题:
本题需要我们找到给定数组中子段之和和最大的sum值

思路:

方法一:暴力解法

我们可以使用双层for循环,第一层循环负责遍历每一个数组元素,然后分别以他们为子段起点,第二层循环从第一层循环的索引开始接着往下遍历累加结果到sum中,且遍历的时候不断用max方法让sum与answer进行比对,如果出现sum小于0就停止当前子段和的搜索,因为

即使后面的数再大,我们前面的sum也对后面的数产生了负作用。
方法二:贪心

其实我们不需要进行两层for循环,一旦出现sum小于0,说明前面一段的所有元素都不可能是最大子段和的开头索引。

贪心策略:从开头索引开始进行遍历,一旦sum小于0就将sum置为0,接着往下遍历

贪心策略证明:

假设出现了sum小于0的那一段元素存在最大子段和的初始索引

情况1:最大子段在sum内

Sak<Sck,所以Sak-Sck < 0,即Sac<0。而ac段的总和不会小于0,因为如果他小于0(也就是此时sum就小于0了),那么就不会存在Sab段,直接在Sac段就截断了

情况2:最大子段不全在sum内

我们知道:Scb>Sab

若Sab>Scb,最大子段和的开始位置就是a

而此时由于Sac+Scb = Sab,我们得出Sac又要小于0,同理此时也是不合理的

综上:最大子段和的开始位置不会出现在sum小于0的数据段中,可以直接舍弃

解题:
 

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 2e5 + 10;
typedef long long ll;
int n;
int a[N];
ll answer = -1e7;
ll sum;
int main()
{//数据录入cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];}//遍历查找for (int i = 1; i <= n; i++){sum += a[i];answer = max(sum, answer);if (sum < 0)sum = 0;}cout << answer << endl;return 0;
}

P1115 最大子段和 - 洛谷

http://www.dtcms.com/wzjs/302412.html

相关文章:

  • 查询网站用什么做的ks免费刷粉网站推广马上刷
  • 技术支持 湘潭网站建设网络销售有哪些
  • 山西建设机械网站首页优化师助理
  • 做网站在阿里云买什么软件人力资源培训机构
  • 亚洲做性视频网站北京学校线上教学
  • 网站推广的方式有哪几种关键词排名工具
  • 网站建设盈利模式北京整站线上推广优化
  • 专门做ppt的网站自动外链网址
  • 广东深圳市宝安区疫情最新情况福州短视频seo网站
  • 网站编辑简历百度关键词排名批量查询
  • 邵阳网站建设上科互联网络营销的概念及特点
  • 怎么做网站数据分析正规百度推广
  • wordpress网站都有哪些绍兴百度seo排名
  • 买的虚拟主机怎么做网站5118
  • 个性网站模版seo排名技术教程
  • 陵水网站建设咨询热门推广软件
  • 怎样做网站变手机软件广州aso优化
  • 我想做网站怎么做百度相册登录入口
  • 网站的反链怎么做百度数据研究中心官网
  • 已购买域名 如何做网站知乎软文推广
  • 广西 网站开发seo研究中心道一老师
  • 网页设计作品点评苏州seo安严博客
  • 哪里有做网站app的肇庆seo排名
  • 开发平台教程西安搜索引擎优化
  • 做企业网站域名需要解析吗软文平台
  • 网站建设类文章技师培训
  • 夸克作文网站制作网站软件
  • 网站内容如何编辑吉林seo网络推广
  • 做译员的网站我赢网客服系统
  • 网页设计实训总结万能版1000字网站推广的优化