洛谷题目链接

题目赋值出来格式有问题,所以我就只放题目链接了

下面为ac代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=+;
ll a[maxn];//存放输入的数据
ll f[maxn];//用来递推
int main()
{
ll n;
cin>>n;
for(ll i=;i<=n;i++)
scanf("%lld",&a[i]);//输入数据 for(ll i=;i<=n;i++)
{
f[i]=max(a[i],a[i]+f[i-]);
} ll ans=f[];//先给ans赋初值为f[i] for(ll i=;i<=n;i++)//这里的意思是让ans等于f[1~n]中最大的
if(f[i]>ans)
ans=f[i]; cout<<ans<<endl; }

点击加号展开代码

文字讲解(代码中也有部分注释):

f[i]数组的意义是以a[i]为末尾的序列中最大的总和

比如说序列1 3 4

那么f[1]=1,f[2]=1+3=4,f[3]=1+3+4=8

然后如果从左往后递推,也就是f[i],i从1~n

f[i],可以等于a[i],也可以等于f[i-1]+a[i]

这两个要看谁大,所以要用max函数,具体的递推方程就是:

f[i]=max(a[i],a[i]+f[i-1])

比如说当f[i-1]=4,a[i]=-1,那么f[i]就肯定选和f[i-1]合并比较好

那么如果f[i-1]=-1,a[i]=4,此时f[i]=a[i]能保证f[i]是以a[i]为末尾的序列中最大的总和

类似的栗子还有好多,可以自己举栗子看看

接下来推荐一道类似的知识点题目:

最长不下降子序列

最长上升子序列(动态规划递推)

再贴一次代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=+;
ll a[maxn];//存放输入的数据
ll f[maxn];//用来递推
int main()
{
ll n;
cin>>n;
for(ll i=;i<=n;i++)
scanf("%lld",&a[i]);//输入数据 for(ll i=;i<=n;i++)
{
f[i]=max(a[i],a[i]+f[i-]);
} ll ans=f[];//先给ans赋初值为f[i] for(ll i=;i<=n;i++)//这里的意思是让ans等于f[1~n]中最大的
if(f[i]>ans)
ans=f[i]; cout<<ans<<endl; }

最大子段和(洛谷P1115,动态规划递推)的更多相关文章

  1. NOIP 2008 传纸条(洛谷P1006,动态规划递推,滚动数组)

    题目链接:P1006 传纸条 PS:伤心,又想不出来,看了大神的题解 AC代码: #include<bits/stdc++.h> #define ll long long using na ...

  2. NOIP 2006 金明的预算方案(洛谷P1064,动态规划递推,01背包变形,滚动数组)

    一.题目链接:P1064 金明的预算方案 二.思路 1.一共只有五种情况 @1.不买 @2.只买主件 @3.买主件和附件1(如果不存在附件也要运算,只是这时附件的数据是0,也就是算了对标准的结果也没影 ...

  3. AC日记——最大子段和 洛谷 P1115

    题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度. 第2行包含N个绝对值不大于10000 ...

  4. 最长上升子序列(动态规划递推,LIS)

    1759:最长上升子序列 题目: 总时间限制: 2000ms 内存限制: 65536kB 描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的 ...

  5. 洛谷p1115 最大子段和

    题目链接: 最大子段和 题目分析: 动态规划O(n)求解,设f[i]表示以i为终点的最大子段和 分两种情况: 若f[i-1]>0,则显然f[i]=f[i-1]+a[i](a[i]必须包含在内) ...

  6. P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)

    题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...

  7. P2347 砝码称重(动态规划递推,背包,洛谷)

    题目链接:P2347 砝码称重 参考题解:点击进入 纪念我第一道没理解题意的题 ''但不包括一个砝码也不用的情况'',这句话我看成了每个砝码起码放一个 然后就做不出来了 思路: 1.这题数据很小,10 ...

  8. NOIP2000方格取数(洛谷,动态规划递推)

    先上题目: P1004 方格取数 下面上ac代码: ///如果先走第一个再走第二个不可控因素太多 #include<bits/stdc++.h> #define ll long long ...

  9. P1541 乌龟棋 题解(洛谷,动态规划递推)

    题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...

随机推荐

  1. 用js采集网页数据并插入数据库最快的方法

    今天教大家一个快速采集网站数据的方法,因为太晚了,直接上例子,这里以采集易车网的产品数据为例. 思路:利用js获取网页数据并生成sql命令,执行sql命令把采集的数据插入数据库. 1.用谷歌浏览器或者 ...

  2. Vijos 1565 多边形 【区间DP】

    描述 zgx给了你一个n边的多边形,这个多边形每个顶点赋予一个值,每条边都被标上运算符号+或*,对于这个多边形有一个游戏,游戏的步骤如下:(1)第一步,删掉一条边:(2)接下来n-1步,每步对剩下的边 ...

  3. Struts数据验证

    Action类继承了ActionSupport类,而该类实现了Action.Validateable.ValidationAware.TextProvider.LocaleProvider和Seria ...

  4. Jquery ajax json 值回传不了

    今天调试系统的时候,MVC 框架下调用ajax 值,回传的json值获取不到,后来发现竟然是服务没开,郁闷不已,留个截图,做个纪念.

  5. wrap(),wrapAll(),wrapInner()的区别

    wrap从字面上理解就是包裹的意思,这三个函数也都是起到将内部节点进行包裹的作用,但是他们的各自的功能有又大不相同. 1.  a.wrap(b) 这个函数的作用是用b将a进行包裹,其中a所选中的可以为 ...

  6. Akka源码分析-Akka-Streams-概念入门

    今天我们来讲解akka-streams,这应该算akka框架下实现的一个很高级的工具.之前在学习akka streams的时候,我是觉得云里雾里的,感觉非常复杂,而且又难学,不过随着对akka源码的深 ...

  7. eccharts-gl 3D立体柱状图

    echarts-gl继承于echarts echarts-gl官方实例https://echarts.baidu.com/examples/index.html#chart-type-globe 代码 ...

  8. 【css】回想下经典的布局

    看到这张图相信大多数人都很熟悉,这曾经是一种经典的布局方式,一道经典的面试题,一般形如"实现一个布局,左右固定宽度,中间自适应".随着岁月的流转,时光的交替(颇有一种“天下风云出我 ...

  9. [转]mysql的查询、子查询及连接查询

    转自:http://www.cnblogs.com/rollenholt/archive/2012/05/15/2502551.html 一.mysql查询的五种子句         where(条件 ...

  10. .Net MVC之间的关系以及如何运用

    .Net MVC组成部分:视图(views)模型(model)控制器(controller)以及路由(RouteConfig),视图跟模型的数据不进行直接的交互,他们是通过控制器进行视图模型之间的数据 ...