题目

信息学奥赛一本通(C++版)在线评测系统

思路

这一道题大家可以自己先在纸上画一画,不出意外的话,你的答案应该是这样的

算出来答案是63,然而!有一个更优的答案!!

结果是86!

这是为啥嘞?因为我们做题的时候往往会先选大的,这样和就会更大的,但是这样只能保证局部最优解,但是没办法保证全局最优解(贪心的思想)。

所以到底该怎么做呢?动态规划。

动态规划,英文简称dp,主要思想:先列出各种可能的局部解,再根据某种判定条件,舍弃肯定得不到最优解的局部解,在每一步都经过筛选,以每一步都是最优解来保证全局最优解

听不懂?很正常!再举个例子。

现在有一个数字塔,a[]

5

8   3

12  7 16

4   10  11   6

9   5    3     9   4

求最大值

可以这样,打一个dp表

怎么来的呢?

每个点都是:两个来源:

dp[i-1][j],dp[i-1][j-1]取大值加上`a[i][j]` -->状态转移方程式

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

任何一个i,j只跟自己和上一行有关。这就是后无效性原则

代码实现

注意dp写代码索引都从1开始,不要用0,不然又能索引会有-1的情况

#include <iostream>
using namespace std;
typedef long long ll;int a[1010][1010];  //数字塔
int dp[1010][1010];  //dp表int main(){int n;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){cin>>a[i][j];  //输入}}dp[1][1]=a[1][1];for(int i=2;i<=n;i++){for(int j=1;j<=i;j++){ dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j];  //状态转移方程式}}int mx=1;for(int i=2;i<=n;i++){if(dp[n][i]>dp[n][mx]) mx=i;  //在最底层寻找最大值}cout<<dp[n][mx];  //输出return 0;
} 

完结撒花~

信息学奥赛一本通1258:数字金字塔相关推荐

  1. 信息学奥赛一本通 1258:【例9.2】数字金字塔

    [题目链接] ybt 1258:[例9.2]数字金字塔 [题目考点] 1. 记忆化搜索 2. 动态规划基本型 [解题思路] 思路1:一般深搜(非正确解) 每到一个位置,更新加和,向左下,右下两个方向搜 ...

  2. 信息学奥赛一本通1258:【例9.2】数字金字塔题解

    [题目表述] [考点分析] 动态规划 [解题思路] 样例金字塔可以看成下面的形式方便使用数组来处理: 13 11  8 12  7    26 6   14  15    8 12  7   13  ...

  3. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  4. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

  5. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  6. 信息学奥赛一本通 1358:中缀表达式值(expr)

    [题目链接] ybt 1358:中缀表达式值(expr) [题目考点] 1. 表达式求值 中缀表达式转后缀表达式 后缀表达式求值 [解题思路] 由于题目要求做中缀表达式转为后缀表达式,而后求值.那么这 ...

  7. 信息学奥赛一本通 1356:计算(calc)

    [题目链接] ybt 1356:计算(calc) [题目考点] 1. 表达式求值 中缀表达式求值 2. 表达式树 表达式树:一棵表达式树可以表示一系列的运算. 表达式树中的结点包括运算符与数值 str ...

  8. 信息学奥赛一本通 2021:【例4.6】最大公约数

    [题目链接] ybt 2021:[例4.6]最大公约数 [题目考点] 1. while循环 2. 求最大公约数 辗转相减法 辗转相除法 [解题思路] 解法1:枚举 取较小数字,从该数字的值开始从大到小 ...

  9. 移动玩具(信息学奥赛一本通-T1453)

    [题目描述] 在一个 4×4 的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将 ...

最新文章

  1. items属性的combo_【内存消耗问题】DataGridViewComboboxColoumn关于Items属性和DataSource属性的性能开销问题...
  2. python自学网站有哪些-Python学习网站有哪些?Python基础教程网站推荐
  3. python reduce函数_Python reduce函数作用及实例解析
  4. [NOIP2006] 数列
  5. 【今晚七点半】:对话平行未来姜雨晴——重启熊猫直播背后的故事
  6. LiveVideoStackCon 2020北京站-售票通道关闭倒计时1天
  7. 2020第十一届蓝桥杯软件类省赛第二场C/C++ 大学 B 组(题解)
  8. matlab空格会消失了,如何在Matlab中自动删除保存的尾随空格?
  9. hdu 3652 B-number 数位dp
  10. 关于对象的思考(二)
  11. 表格存储如何实现跨区域的容灾
  12. NFT 项目的 7 种市场营销策略
  13. iphone4屏幕各部分尺寸
  14. html绑定drag事件,html 5自带drag属性详解
  15. SpringSecurity授权
  16. VSCODE使用EmbeddedIDE插件开发51单片机
  17. Pyinstaller打包
  18. .html扩展名的文件类型,JS 获取文件后缀,判断文件类型(比如是否为图片格式)...
  19. c语言编程一对新出生的兔子,C语言 有一对兔子。从出生后第三个月起每个月都生一对兔子,小兔子长到三个月后又生一对小兔子,假如兔子都不死,问每个月的兔子总数为多少。...
  20. 微信小程序相册-笔记1

热门文章

  1. MVC有哪几种过滤器?
  2. 【计算机科学】【2013.08】点云的表面重建
  3. 记一次完整手机APP项目的开发
  4. 区块链技术发展现状和趋势
  5. RSA算法的Python实现(模幂运算——原始算法)
  6. 意料之外,这个应用居然霸榜了苹果APP Store排行榜
  7. 20180619 Linux 软件包安装和卸载 7.1 - 7.9
  8. Rxjava操作符之过滤操作
  9. 《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界
  10. Linux·内核源码简单分析