17-8-1

题目描述

数字金字塔问题

解答

d[i][j]=max(d[i-1][j],d[i-1][j-1])+x[i][j];
下一行只与上一行求得的最大值有关
有待优化

代码

/*
ID: 18795871
PROG: numtri
LANG: C++
*/
#include<iostream>
#include<cstring>
#include<fstream>
using namespace std;ifstream fin("numtri.in");
ofstream fout("numtri.out");const int N = 1000;
int dp[N+1][N+1],x[N+1][N+1];
int n;int main(){int i,j;while (fin>>n){for (i=1;i<=n;i++){for (j=1;j<=i;j++){fin>>x[i][j];}}dp[1][1]=x[1][1]; for (i=2;i<=n;i++){for (j=1;j<=i;j++){dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+x[i][j];}}int res=0;for (j=1;j<=n;j++){res=max(res,dp[n][j]);}fout<<res<<endl;}return 0;
}

这个代码有许多需要优化的地方:
比如说dp数组,其实就只和上一层的状态有关,假设当前我们来到了第i+1层,那么我们只需要知道第i层当前求得的最大值即可,那么我们就可以将它压缩成一维的了,需要注意的是:如果我们j的循环还是从小到大的话,那么我们上一层的j状态已经被上一步操作更新过了,所以我们应该从大到小循环。

/*
ID: 18795871
PROG: numtri
LANG: C++
*/
#include<iostream>
#include<cstring>
#include<fstream>
using namespace std;ifstream fin("numtri.in");
ofstream fout("numtri.out");const int N = 1000;
int dp[N+1],x[N+1][N+1];
int n;int main(){int i,j;while (fin>>n){for (i=1;i<=n;i++){for (j=1;j<=i;j++){fin>>x[i][j];}}dp[1]=x[1][1]; for (i=2;i<=n;i++){for (j=i;j>=1;j--){dp[j]=max(dp[j],dp[j-1])+x[i][j];}}int res=0;for (j=1;j<=n;j++){res=max(res,dp[j]);}fout<<res<<endl;}return 0;
}

不难发现,我们的x数组也是没有必要存的(以后要用到的才有必要进行存储),于是乎,就有了最简洁的那一种。

/*
ID: 18795871
PROG: numtri
LANG: C++
*/
#include<iostream>
#include<cstring>
#include<fstream>
using namespace std;ifstream fin("numtri.in");
ofstream fout("numtri.out");const int N = 1000;
int dp[N+1];
int n;int main(){int i,j,t;while (fin>>n){int res=0;for (i=1;i<=n;i++){for (j=1;j<=i;j++){fin>>t;dp[i-j+1]=max(dp[i-j+1],dp[i-j])+t;res=max(res,dp[i-j+1]);}}fout<<res<<endl;}return 0;
}

USACO-Section1.6 Number Triangles (动态规划)相关推荐

  1. 数字三角形 Number Triangles

    [USACO1.5][IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以 ...

  2. P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles(记忆化搜索)--- 89分

    [USACO1.5][IOI1994]数字三角形 Number Triangles - 洛谷 /* P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles(记忆 ...

  3. usaco Number Triangles

    想到要用动态规划,结果在怎么存数据的地方卡主了我真跟傻逼一样下面数据存储的方式等于给出来了,不过就算知道怎么存图我能想到怎么动规这是个问题,这题是动规里的经典题也是简单题. /* ID: jinbo ...

  4. 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)

    -卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡特兰(1814–1894)命名.历史上,清朝数学家明安图(1692年-1763年)在其<割圜密率捷法> ...

  5. P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles

    题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...

  6. P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles(简单dp)

    https://www.luogu.org/problemnew/show/P1216 题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步 ...

  7. USACO1.5 Number Triangles(numtri)

    2019独角兽企业重金招聘Python工程师标准>>> 动态规划的基础题,状态转移方程dy(i,j)=a(i,j)+max{d(i+1,j),d(i+1,j+1)}:利用记忆化搜索, ...

  8. USACO section1.3 Barn Repair 修理牛棚(贪心)

    题目:http://www.wzoi.org/usaco/11%5C304.asp 大意:有m个点,用有数量限制的区间把这些点全部覆盖,求区间和的最小值. 贪心原理:如果限制的区间数大于等于m的话an ...

  9. 洛谷P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles

    题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...

最新文章

  1. QIIME 2教程. 10数据导出Exporting data(2020.11)
  2. 06_MyBatis,Spring,SpringMVC整合
  3. Kotlin中的接口回调
  4. 【XAudio2】8.怎么播放音效
  5. alter database open resetlogs
  6. mysql的引双向链表_一分钟掌握MySQL的InnoDB引擎B+树索引
  7. 使用InstallShield下部署ASP.NET网站和MySQL,目标机为Win7——(二)使用InstallShield部署非安装版MySQL...
  8. 大数据之-Hadoop伪分布式_启动YARN并运行MR程序---大数据之hadoop工作笔记0026
  9. 【渝粤教育】国家开放大学2018年春季 7215-21T电气传动与调速系统 参考试题
  10. Vimium插件使用方法(其实就是盗了一张图)
  11. HTML--video中的自动播放autoplay以及循环播放loop+更多多媒体标签
  12. BuildMost分享-全球最大的自贸区揭牌!建材外贸在非洲会有多大舞台?
  13. 周年更名,元宇宙产业委再上新台阶
  14. python request 报错 #No JSON object could be decoded
  15. excel 列过多,打印每一页都会带上固定几列设置
  16. 现代通信网(第1章 绪论)
  17. 模糊查询银行卡号mysql_mysql like查询字符串示例语句
  18. CODESYS 赛搏机器智能MIC7001总线控制器+松下A6BE总线驱动器
  19. [Deeplearning] Gradient vanish
  20. php自动调用打印机直接打印,PHP自动打印到网络打印机?

热门文章

  1. 第八届“数学、计算机与生命科学交叉研究” 青年学者论坛--特别云论坛
  2. 精选| 2020年12月R新包推荐(第49期)
  3. 她的癌细胞救了上亿条命,却很少有人知道她的名字
  4. linux无盘工作站互不干扰,Linux环境下无盘工作站的架设和实现二
  5. python打开xml文件报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xb7 in position 58: illegal multi
  6. 使用百度webuploader插件进行多文件类型分片上传实例
  7. HBase详细的安装和使用方法
  8. Vue第一部分(4):表单的双向数据绑定:v-model指令
  9. Java笔记-JdbcTemplate批量执行insert及update
  10. c++ public 函数名相同_C++虚函数、重载、覆盖