ACM-数塔
来源:互联网 发布:淘宝客服名 编辑:程序博客网 时间:2024/05/16 10:02
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int main(){ int n; scanf("%d",&n); while(n--) {int h;int i,j; int a[111][111]; memset(a,0,sizeof(a)); scanf("%d",&h); for(i=1;i<=h;i++) for(j=1;j<=i;j++) scanf("%d",&a[i][j]); for(i=2;i<=h;i++) for(j=1;j<=i;j++) {if((a[i][j]+a[i-1][j-1])<(a[i][j]+a[i-1][j])) a[i][j]+=a[i-1][j]; else a[i][j]+=a[i-1][j-1]; } /* for(i=1;i<=h;i++) for(j=1;j<=i;j++) printf("%d ",a[i][j]);*/ int max=a[h][1];for(i=1;i<=h;i++) if(a[h][i]>max) max= a[h][i];printf("%d\n",max); }}
经典DP。
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:
有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?
已经告诉你了,这是个DP的题目,你能AC吗?
Input
输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。
Output
对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。
Sample Input
1573 88 1 0 2 7 4 44 5 2 6 5
Sample Output
30
0 0
- ACM-数塔
- ACM 数塔 (基础)
- acm 数塔
- ACM数塔
- hdu acm 2084 数塔
- [ACM - 动规]数塔
- ACM 数塔/dp入门
- acm 3 1006 数塔
- ACM HDU 2048 数塔
- ACM--steps--3.2.6--数塔
- ACM—动态规划-数塔
- HDU ACM 11 2084 数塔、水题
- ACM 组合数
- ACM之水仙花数
- ACM-蛇形填数
- ACM数论题集
- ACM 数星星
- ACM数论题集
- listview优化几种写法
- amazon ec2 pem 丢失
- 不能将参数 1 从“CString”转换为“const char *
- 【SzNOI语法百题】【d007】 求两数的整数商 和 余数
- CODEVS 1012 最大公约数和最小公倍数问题
- ACM-数塔
- 02-3. 求前缀表达式的值(25)
- Caused by: android.view.InflateException: Binary XML file line #57: Error inflating class null
- shell必备知识
- springmvc文件上传
- Gas Station
- 【Boost】Boost总结汇总
- EBS_R12_Web_ADI_使用手册
- java class loader 学习