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. ...
随机推荐
- CodeForces 699C - Vacations
题目链接:http://codeforces.com/problemset/problem/699/C C. Vacations time limit per test1 second memory ...
- python中join()函数讲解
本文简述的是string.join(words[, sep]),它的功能是把字符串或者列表,元组等的元素给连接起来,返回一个字符串,和split()函数与正好相反,看下面的代码理解. a=[" ...
- 关于php使用xpath解析html中文乱码问题
$str2 = '<div id="content">我很好 </div>'; $dom = new DOMDocument(); //load之前强转字符 ...
- mac finder中添加自定义边栏
想在finder中添加自定义边栏,操作如图所示: 选中边栏中任意边栏项,右键-在上层文件夹中显示,然后创建新的文件夹,将该文件夹拖到边栏中即可.
- chrome 下载插件包及离线安装 附 Advanced Rest Client 下载
最近需要测试http rest服务,由于chrome插件的轻便,首先想到了用chrome插件,在google商店找到Advanced Rest Client,用了一阵感觉不错. 于是项目组其他同事也要 ...
- 03-offsetParent属性
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- HackerRank# Fibonacci Modified
原题地址 竟然64位都要爆,这是要大整数乘法的节奏吗?我才不要写大整数乘法呢,用Ruby干掉 代码: # Enter your code here. Read input from STDIN. Pr ...
- LinkedList的构造函数有哪些
LinkedList构造函数有(两种): public LinkedList() public LinkedList(Collection<? extends E> c) /** * Co ...
- poj 1061 青蛙的约会(二元一次不定方程)
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要 ...
- 商务旅行(codevs 1036)
题目描述 Description 某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间. 假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任 ...