hdu 2084
2016-05-13 19:22
281 查看
题目概述:
有times组数据
一个N层数塔,第一层一个数,其后每层多一个数,只能由上层向下层的左右两个分支移动
输入:
第一行times,下一行N,其后N行每行数的数量从1递增
输入有多组
限制:
1<=N<=100;
输出:
每行一个整数,到达底层时所经过路径上数的和的最大值
多组输出之间没有空行
样例输入:
1
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
样例输出:
30
讨论:
dp,不过并用不上二维数组,在每行输入结束后直接处理掉就行,因为每个点考虑的只是上一层的同下标和下标-1的点,因此从这一层相对上一层多出来的点开始dp,同下标的点在上一层不存在,而下标-1的点存在,直接将结果覆盖到处理数组(上层时这个点根本不存在),不会影响下一个点dp的结果,如此到最后一层,再顺序找一个最大的,就是结果
题解状态:
31MS,1720K,797 B,C++
EOF
有times组数据
一个N层数塔,第一层一个数,其后每层多一个数,只能由上层向下层的左右两个分支移动
输入:
第一行times,下一行N,其后N行每行数的数量从1递增
输入有多组
限制:
1<=N<=100;
输出:
每行一个整数,到达底层时所经过路径上数的和的最大值
多组输出之间没有空行
样例输入:
1
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
样例输出:
30
讨论:
dp,不过并用不上二维数组,在每行输入结束后直接处理掉就行,因为每个点考虑的只是上一层的同下标和下标-1的点,因此从这一层相对上一层多出来的点开始dp,同下标的点在上一层不存在,而下标-1的点存在,直接将结果覆盖到处理数组(上层时这个点根本不存在),不会影响下一个点dp的结果,如此到最后一层,再顺序找一个最大的,就是结果
题解状态:
31MS,1720K,797 B,C++
#include<algorithm> #include<string.h> #include<stdio.h> #include<math.h> using namespace std; #define INF 0x3f3f3f3f #define maxx(a,b) ((a)>(b)?(a):(b)) #define minn(a,b) ((a)<(b)?(a):(b)) #define MAXN 102 int items[MAXN];//原始数据,存放每层的数 int pro[MAXN];//过程数组,存放每次dp的结果,也就是路径上数的和 int fun(int N) { for (int p = 1; p <= N; p++) { for (int o = 0; o < p; o++) scanf("%d", &items[o]);//input//读入这一层的数 for (int o = p - 1; o >= 0; o--) pro[o] = maxx(pro[o], pro[o - 1]) + items[o];//逆序dp,后一个数不会影响前一个dp的结果 }//input ends here<span id="transmark"></span> int big = -INF; for (int p = 0; p < N; p++) big = maxx(big, pro[p]);//找出最大的数 return big; } int main(void) { //freopen("vs_cin.txt", "r", stdin); //freopen("vs_cout.txt", "w", stdout); int times; scanf("%d", ×);//input while (times--) { int N; scanf("%d", &N);//input printf("%d\n", fun(N));//output memset(pro, 0, sizeof(pro)); } }
EOF
相关文章推荐
- Lucene原理与代码分析解读笔记
- <html>img、map、area
- 阅读《RobHess的SIFT源码分析:综述》笔记
- Linux上的free命令详解
- VS2012 + QT5.4.0 + OPENCV249 环境搭建小结
- HDU 1238 Substrings
- 北京大学信息科学技术学院本科生课程体系课程大纲选登——软件测试
- shell原理和问答机制引入
- Android网页中tel,sms,mailTo,Intent,Market协议用法总结
- 关于Android开发中的证书和密钥等问题
- apache.commons.lang 包 StringUtils 的 isBank() 方法认知
- Error in library.dynam(lib, package, package.lib) : shared object ‘plyr.so’ not found
- 两次面试
- 北京大学信息科学技术学院本科生课程体系课程大纲选登——数理逻辑
- vmware-tools(vmware workstation 10.0.4)安装的时候遇到的bug
- set STL 简单说说
- 指针和引用的差别
- set STL 简单说说
- Java设计模式-工厂方法模式和抽象工厂模式
- 决策树(ID3、C4.5、CART、随机森林)