南阳理工oj_The Triangle
2016-05-17 14:42
423 查看
The Triangle
时间限制:1000 ms | 内存限制:65535 KB
难度:4
描述
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.
输入
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.
输出
Your program is to write to standard output. The highest sum is written as an integer.
样例输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
样例输出
30
上传者
苗栋栋
时间限制:1000 ms | 内存限制:65535 KB
难度:4
描述
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.
输入
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.
输出
Your program is to write to standard output. The highest sum is written as an integer.
样例输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
样例输出
30
上传者
苗栋栋
#include <iostream> #include <cstdio> #include <algorithm> #include <string> #include <cstring> #include <cstdlib> using namespace std; int a[110][110], dp[110][110]; #define mem(a) memset(a, 0, sizeof(a)) int main() { int n; while (cin >> n) { mem(a); mem(dp); for (int i = 0; i<n; i++) { for (int j = 0; j<=i; j++) { cin >> a[i][j]; } } for (int i = 0; i<n; i++) dp[n-1][i] = a[n-1][i]; for (int i = n-2; i>=0; i--) { for (int j = i; j>=0; j--) { dp[i][j] = max(a[i][j] + dp[i+1][j], a[i][j] + dp[i+1][j+1]); } } cout << dp[0][0] << endl; } return 0; }
相关文章推荐
- nginx+nagios使用用户名密码鉴权设置
- spring jdbcTemplate query
- 下拉框combobox用法&级联餐单
- PHP中的11个魔术方法总结:__construct,、__destruct、__call等
- OC关联objc_setAssociatedObject
- LeetCode-263&264.Ugly Number
- 获取数组的最小值
- RabbitMQ在分布式系统的应用
- 架构漫谈(七):不要空设架构师这个职位,给他实权
- 有关ios硬件的部分的
- 122. Best Time to Buy and Sell Stock II
- Pascal's Triangle II
- PS结合Magic Morph制作一张趣味的动态图
- 决策树二
- 基于Bootstrap3表格插件和分页插件实例详解
- UVALive 6277 - Addictive Bubbles (模拟)
- 【一天一道LeetCode】#51. N-Queens
- 【一天一道LeetCode】#51. N-Queens
- SiteWhere如何连接MongoDB
- Android通知之Notification的用法剖析