HDU2084_数塔【简单题】【数塔】
Problem Description
在讲述DP算法的时候,一个经典的样例就是数塔问题,它是这样描写叙述的:
有例如以下所看到的的数塔。要求从顶层走究竟层,若每一步仅仅能走到相邻的结点,则经过的结点的数字之和最大是多少?

已经告诉你了。这是个DP的题目。你能AC吗?
Input
输入数据首先包含一个整数C,表示測试实例的个数。每一个測试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔。当中第i行有个i个整数,且全部的整数均在区间[0,99]内。
Output
对于每一个測试实例,输出可能得到的最大和,每一个实例的输出占一行。
Sample Input
1
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
Sample Output
30
Source
2006/1/15 ACM程序设计期末考试
题目大意:比較好理解
思路:若从上往下考虑的话,每次有两个选择,N层数塔就有2^(N-1)种方案,
遍历一边不科学。换种方式,从下往上考虑,每次比較临近两个数的大小,让较
大的数往上加。这样每次选择得到的都是最优的情况,逐层上移累加。终于加到
顶部的时候,得到的结果就是最优的,即最大的。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int map[110][110],dp[110];
int main()
{
int C,N;
scanf("%d",&C);
while(C--)
{
scanf("%d",&N);
memset(map,0,sizeof(map));
memset(dp,0,sizeof(dp));
for(int i = 1; i <= N;i++)
{
for(int j = 1; j <= i; j++)
{
scanf("%d",&map[i][j]);
}
}
for(int i = N; i>=1; i--)
{
for(int j = 1; j <= i;j++)
{
if(i == N)
dp[j] = map[i][j];
else
{
dp[j] = max(dp[j],dp[j+1]) + map[i][j];
}
}
}
printf("%d\n",dp[1]);
} return 0;
}
HDU2084_数塔【简单题】【数塔】的更多相关文章
- 树状数组例题-数星星,简单题easy,校门外的树2,清点人数
[例1]数星星 天空中有一些星星,这些星星都在不同的位置,每个星星都有个坐标,如果一个星星的左下方(包括正左和正下)有k颗星星,就说这颗星星是k级的. 比如,上图中,星星5是3级的(1,2,4在其左下 ...
- hdoj 5092 Seam Carving 【树塔DP变形 + 路径输出】 【简单题】
Seam Carving Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tot ...
- 3道acm简单题(2011):1.判断是否能组成三角形;2.判断打鱼还是晒网;3.判断丑数。
//1.输入三个正整数A.B.C,判断这三个数能不能构成一个三角形.//思路:最小的两边之和是否是大于第三边#include<iostream>#include<algorithm& ...
- Java判断回文数算法简单实现
好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...
- 【OI】关于斯特林数的简单理解
斯特林数分为第一类斯特林数:S1(n,k)和第二类斯特林数:S2(n,k). S1(n,k)代表在n个元素中选出k个环的方案数,S2(n,k)代表在n个元素中选出k个非空集合的方案数, 不同之处在于, ...
- LeetCode--回文数(简单)
题目描述: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解 ...
- 汉诺塔III 汉诺塔IV 汉诺塔V (规律)
汉诺塔III Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 【BZOJ-1176&2683】Mokia&简单题 CDQ分治
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1854 Solved: 821[Submit][St ...
- 又一道简单题&&Ladygod(两道思维水题)
Ladygod Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- Codeforces 828B Black Square(简单题)
Codeforces 828B Black Square(简单题) Description Polycarp has a checkered sheet of paper of size n × m. ...
随机推荐
- cdev结构体
在内核源码include/linux/cdev.h里对cdev结构体的定义: struct cdev { struct kobject kobj; // 内嵌的kobject对象 struct mo ...
- android 之 菜单
android的菜单主要分三类:选项菜单(Options Menu).上下文菜单(Context Menu).子菜单(Submenu). 1 选项菜单和子菜单 一个Menu对象代表一个菜单,Menu中 ...
- 从PHP5到PHP7的注意事项——PHP7全面删除Mysql扩展支持
PHP删除了一些函数,其中是吓人的是两个: 1. ereg_* 系列的正则函数 2. mysql_* 系列的数据库连接函数 PHP7全面删除Mysql扩展支持,原本的mysql_*系列函数将在mysq ...
- ppp详解
ppp 一 PPP point to point protocol 数据链路层协议 PPP session establishment 1 link est ...
- centos dhcp 服务器搭建 多vlan
centos dhcp 服务器搭建 多vlan centos 6.5 版本 /etc/dhcp/dhcpd.conf 服务器配置文件 /etc/rc.d/init.d/ ...
- Laya 屏幕适配
Laya 屏幕适配 @author ixenos 2019-03-20 21:44:52 1.最简单的方案:原比例,对照屏幕尺寸的最小比率缩放,有黑边 Laya.stage.scaleMode = S ...
- “玲珑杯”ACM比赛 Round #18
“玲珑杯”ACM比赛 Round #18 Start Time:2017-07-15 12:00:00 End Time:2017-07-15 15:46:00 A -- 计算几何你瞎暴力 Time ...
- hdu 4764 巴什博弈
Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 1.ruby基本格式
1.ruby对于空格是敏感的,很像shell 如:a + b 解释成 a+b(这是两个局部变量) a +b 解释成 a(+b) (这是一个方法调用) 2.在ruby中一行怎么才算结束? Ruby解释分 ...
- EXPDP/IMPDP任务的查看与管理
EXPDP/IMPDP相比传统的exp/imp的最本质区别在于服务器端执行,客户端发出指定后,通过API启动服务器的备份job,在执行过程中,可以拿下Ctrl+C组合键,退出当前交互模式,退出之后,导 ...