PKU ACM 1163-The Triangle
2010-06-18 22:16
295 查看
题目来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1163
解题报告:
难的DP不会做,先从简单的入手~
自底向上,f[k]保存从底部到a[k]的所有可能路径的和的最大值,那么f[k]=a[k]+a[k]下两个分支的f[]的最大值。
附录:
The Triangle
Description
Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.
Input
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.
Output
Your program is to write to standard output. The highest sum is written as an integer.
Sample Input
Sample Output
解题报告:
难的DP不会做,先从简单的入手~
自底向上,f[k]保存从底部到a[k]的所有可能路径的和的最大值,那么f[k]=a[k]+a[k]下两个分支的f[]的最大值。
#include <iostream> using namespace std; int max(int a, int b) { return a>b?a:b; } int main() { int N; cin >> N; int total=(N+1)*N>>1; int *a=new int[total]; int *f=new int[total]; for(int i=0;i<total;i++) cin >> a[i]; int k=total-1; for(int i=N;i>0;i--) { for(int j=i;j>0;j--) { if(i==N) f[k]=a[k]; else f[k]=a[k]+max(f[k+i],f[k+i+1]); k--; } } cout << f[0] << endl; }
附录:
The Triangle
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 19579 | Accepted: 11412 |
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1)
Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.
Input
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.
Output
Your program is to write to standard output. The highest sum is written as an integer.
Sample Input
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
Sample Output
30
相关文章推荐
- Pku acm 1163 the Triangle
- Pku1163 the Triangle (动态规划) 数字三角形
- pku1163---the triangle(三角形):动态规划题
- 入门DP pku 1163 The Triangle
- Pku 1163 the Triangle
- pku 1163 The Triangle
- acm--pku--1163
- PKU 1163 The Triangle
- pku 1163 The Triangle(DP)
- PKU ACM 1163
- ACM学习-POJ-1163-The Triangle
- PKU-1163 The Triangle
- PKUOJ1163 The Triangle
- PKU ACM 1012 Joseph 约瑟夫
- pku acm 1064
- PKU ACM 1016 Numbers That Count
- poj_1163 the triangle
- 单调队列 - 兼 ACM PKU POJ 3250 及 2823 解题报告
- pku 1163
- http://acm.pku.edu.cn/JudgeOnline/problem?id=1808 二次剩余式