luogu P1216 [UASCO1.5]数字三角形 Number Triangles
来源:互联网 发布:率土之滨数据 编辑:程序博客网 时间:2024/06/03 08:45
题目描述
观察下面的数字金字塔。
写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。
- ******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
又是一道动态规划题。
这里我从下向上推,倒数第二行的任意元素可以取左下或者右下角的元素,然后我们要使结果最大化,通过比较左下角元素和右下角元素,我们可以得到通过倒数第二行任意元素的唯一最优路径,而此时我们可以将以推算出来的路径之和给最上面的元素,那么问题又转化成了最初的样子,以此推论,我们可以找到整个金字塔的最优路径。
下面贴上代码:
#include<cstdio>#include<algorithm>using namespace std;int dp[1005][1005];int main(void){ int r; scanf("%d",&r); for(int i=1;i<=r;i++) for(int j=1;j<=i;j++) scanf("%d",&dp[i][j]); for(int i=r-1;i>=1;i--) for(int j=1;j<=i;j++) dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+dp[i][j]; printf("%d\n",dp[1][1]); return 0;}
阅读全文
0 0
- luogu P1216 [UASCO1.5]数字三角形 Number Triangles
- 【递推】洛谷 P1216 [USACO1.5]数字三角形 Number Triangles
- 洛谷P1216 [USACO1.5]数字三角形 Number Triangles
- 洛谷 P1216 [USACO1.5]数字金字塔 Number Triangles
- Luogu P1216 数字金字塔+动态规划
- 数字三角形 Number Triangles (顺推)
- 数字三角形 Number Triangles (逆推)
- 数字三角形 Number Triangles(顺推)
- 数字三角形 Number Triangles (一维数组+顺推)
- IOI 1994 USACO 1.5 数字三角形 Number Triangles
- [USACO1.5]数字金字塔 Number Triangles
- 洛谷1216 [USACO1.5]数字金字塔 Number Triangles
- USACO:1.5.1 Number Triangles 数字金字塔
- USACO——Number Triangles 数字金字塔
- 【USACO1.5.1】Number Triangles 数字金字塔
- USACO 1.5 数字金字塔 Number Triangles
- 1.5.1 Number Triangles 数字金字塔
- USACO-Section1.5 Number Triangles
- Qt的QVaiant中使用非QMetaType类型缺少Q_DECLARE_METATYPE宏定义错误
- python安装readline模块 实现自动补全
- Eclipse在线安装JD-Eclipse反编译插件
- spring注解
- android泛型的简单用法
- luogu P1216 [UASCO1.5]数字三角形 Number Triangles
- SLA
- linux系统中如何查看日志 (常用命令)
- 10秒钟自动跳转到其他activity
- MySQL数据库 null转为0,及一些case when用法
- 一个码农到CIO的20年IT从业者的自白:IT管理与技术未必不可兼得
- linux查找日志技巧
- 移动端多线程编程高级篇-哲学家吃饭问题
- 初学spark碰到的一些问题