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

电信100m光纤做网站广告营销平台

电信100m光纤做网站,广告营销平台,网站建设需怎么做,网站二级菜单是什么意思、 审题: 本题需要我们找到给定数组中子段之和和最大的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/135329.html

相关文章:

  • 查工程项目的网站百度seo外链推广教程
  • 深圳网站做的好的公司名称汕头网站建设公司
  • 深圳龙岗网站开发太原seo关键词优化
  • 路由器做网站教程全国人大常委会委员长
  • 无忧网站建设服务网络广告宣传平台
  • 嘉兴网站建设的地方合肥seo快排扣费
  • 做网站 360今日头条新闻10条简短
  • 重庆制作网站培训机构济南seo整站优化价格
  • 小姐姐导航c盘优化大师
  • 外贸电子商务网站深圳百度公司地址在哪里
  • seo网站优化公司域名网站查询
  • 巴中企业网站建设小程序运营推广公司
  • 旅游网站的设计栏目seo的工作内容主要包括
  • 岳阳整站优化合肥网站优化seo
  • 网站建设指导思想和目标推广是做什么工作的
  • wordpress主题安装ftp深圳网站优化公司哪家好
  • 网站制作的书籍北京网站营销seo方案
  • 云南哪里有给做网站的百度新闻网站
  • 中国制造网简介谷歌seo是什么意思
  • 学习网站建设的网站北仑seo排名优化技术
  • 风琴折叠图片效果网站seo是什么意思职业
  • 牛什么的网站建设福州网站优化公司
  • 做产品网站设计应该注意什么百度站长电脑版
  • wordpress手机版本关键词优化的最佳方法
  • 创业先做网站学管理培训班去哪里学
  • 怎么做游戏测评视频网站真正免费建站网站
  • 山东政府网站集约化建设什么搜索引擎搜索最全
  • 淄博专业网站设计快速提升网站关键词排名
  • 瑞安市公用建设局网站seo经典案例
  • 建设公司网站新闻宣传管理制度佛山旺道seo