P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles(简单dp)
https://www.luogu.org/problemnew/show/P1216
题目描述
观察下面的数字金字塔。
写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。
7 3 8 8 1 0 2 7 4 4
4 5 2 6 5
在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大
输入输出格式
输入格式:
第一个行包含 R(1<= R<=1000) ,表示行的数目。
后面每行为这个数字金字塔特定行包含的整数。
所有的被供应的整数是非负的且不大于100。
输出格式:
单独的一行,包含那个可能得到的最大的和。
输入输出样例
输入样例#1:
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出样例#1:
30
说明
题目翻译来自NOCOW。
USACO Training Section 1.5
IOI1994 Day1T1
/*
思路:从后向前推
可以先看只有两行的子问题:
a[1][1]
a[2][1] a[2][2]
明显从最底端到最顶端的ans = max(a[2][1],a[2][2])+a[1][1]
再看有三行的子问题:
a[1][1]
a[2][1] a[2][2]
a[3][1] a[3][2] a[3][3]
a[2][1]到最底端与a[2][2]最底端和只有两行的子问题一样。
…
so,我们就可以初步定义最优状态为dp[i][j]
状态转移方程为:
dp[i][j] = max(dp[i+1][j],d[i+1][j+1]) + a[i][j]
确定边界条件:
最底端元素(即最后一行),dp[n][j] = a[n][j]
write code 之后想想可不可以优化,很容易发现可以优化内存~
*/
Ac_code:
code1:
//未优化内存
#include <iostream>
using namespace std;
int a[1005][1005];
int dp[1005][1005];
int main()
{int n;cin>>n;for(int i = 1; i <= n; i++){for(int j = 1; j <= i; j++){cin>>a[i][j];}}for(int j = 1; j <= n; j++){dp[n][j] = a[n][j];}for(int i = n-1; i >= 1; i--){for(int j = 1; j <= i; j++){dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+a[i][j];}}cout<<dp[1][1]<<endl;return 0;
}
code2:
//其实可以直接开个一位数组存结果,节约内存呐~
#include <iostream>
using namespace std;
int a[1005][1005];
int dp[1005];
int main()
{int n;cin>>n;for(int i = 1; i <= n; i++){for(int j = 1; j <= i; j++){cin>>a[i][j];}}for(int j = 1; j <= n; j++){dp[j] = a[n][j];}for(int i = n-1; i >= 1; i--){for(int j = 1; j <= i; j++){dp[j] = max(dp[j],dp[j+1])+a[i][j];}}cout<<dp[1]<<endl;return 0;
}
P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles(简单dp)相关推荐
- luogu P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles (递推)
链接:https://www.luogu.org/problemnew/show/P1216 题面: 题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的 ...
- [USACO1.5]数字三角形 Number Triangles
https://www.luogu.org/problemnew/show/P1216 题解: /* *@Author: STZG *@Language: C++ */ #include <bi ...
- P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles(记忆化搜索)--- 89分
[USACO1.5][IOI1994]数字三角形 Number Triangles - 洛谷 /* P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles(记忆 ...
- 数字三角形 Number Triangles
[USACO1.5][IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以 ...
- P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...
- 洛谷P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...
- [USACO1.5]数字金字塔 Number Triangles
题意 从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 分析 从最低层开始走. var n,i,j:longint; f,a:array[0..2 ...
- java 数字三角形_数字三角形 Number Triangles(java的MLE解决办法)
于是在网上找相应的解决办法,如何对java的内存进行优化 于是使用了里面的IO读取加速的模板,套用了一下,就过了... import java.io.BufferedReader; import ja ...
- 蓝桥杯 算法训练 数字三角形(最简单的DP)
传送门 题目描述 如下图示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ● ...
最新文章
- 计算机网络:三层ISP结构
- php--点赞功能的实现
- DFS——记忆化搜索——动态规划
- 2014年世界互联网大会---马云篇
- J2EE中在web.xml异常页面跳转
- 架构 | 微服务架构下如何解耦,对于已经紧耦合下如何重构?
- Python字典的常用操作
- .NET中扩展方法和Enumerable(System.Linq)
- 基于bootstrap框架在ie8以下,兼容媒体查询[css样式]
- break lab c语言,C语言实验lab10.doc
- NGINX配置基于Node.js服务的负载均衡服务器
- “不怕的人的面前才有路”!一名双非硕士的985攻博历程
- 正则表达式(Regex)
- 数独用计算机控制比数学家还厉害,用pl/sql解决芬兰数学家因卡拉设计的最难数独...
- 电脑照片,怎么把电脑照片传到iphone手机 将电脑照片传到iphone方法【图文】
- Codeforces1388 D. Captain Flint and Treasure(贪心)
- 乱记春秋-或跃在渊 (苏阳飘零记)
- 惠普关闭 secure boot
- 哪种手机便签软件可以打印,支持打印的手机便签软件
- Python 3基础语法知识点都在这里了,如果还不能入门就不能怪我了
热门文章
- matlab parfor不能用,matlab中parfor函数
- 太赞了!2020年全网最新Java面试题(附答案)免费下载!超全!!
- 【Git学习笔记5】以普通模式合并(--no-ff)、push到远程库及分支管理策略
- matlab直流电机双闭环控制系统设计,基于MATLAB的直流电机双闭环调速系统设计毕业论文.doc...
- struct类型重定义 不同的基类型_汇总贴:STEP7的复杂数据类型有哪些?
- 用python写一个简单的爬虫_用Python编写一个简单的爬虫
- python easygui_极客养成记/Python一点也不难/第四节
- c语言vc数据类型长度,vc和gcc对C语言数据类型长度的定义
- 拨号云服务器怎么自动配置网关_教你在阿里云创建增强型云网关
- mysql ---- 官网的测试数据库