POJ-1163(The Triangle)动态规划基础题
来源:互联网 发布:矩阵的奇异值是什么 编辑:程序博客网 时间:2024/06/16 13:49
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
就是你身处最三角形的顶端,你可以选择向下紧邻两个的左边或右边走,然后求你所走路标的最大总和
这题可以从递归的角度来理解,即要求当前这个的最大值只要知道左边的最大值和右边的最大值哪个大就可以,当然这道题用递归完全可以写出来,只要把重复计算的值存储起来就可以了。但用动态规划的思路更容易,即从倒数第二层开始进行运算,把下面相邻两个数里面最大的那个加到当前位置,然后运算到第一层时就可以得到答案了。
完整代码如下:
#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#define MAX 110using namespace std;int dp[MAX][MAX];int main(void){ int n; while(cin >> n){ for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++) cin >> dp[i][j]; } for(int i=n-1;i>=1;i--){//从倒数第二层开始进行运算 for(int j=1;j<=i;j++){ dp[i][j] = max(dp[i+1][j],dp[i+1][j+1]) + dp[i][j];//相邻两个最大的加上当前位置的值 } } cout << dp[1][1] << endl; } return 0;}
- POJ-1163(The Triangle)动态规划基础题
- POJ-1163-The Triangle-动态规划
- poj 1163 The Triangle 线性动态规划
- poj 1163 The Triangle (动态规划)
- POJ 1163 The Triangle (动态规划)
- poj 动态规划DP - 1163 The Triangle
- poj 1163 The Triangle 动态规划
- POJ 1163:The Triangle(动态规划)
- poj-1163-The Triangle-动态规划dp
- poj 1163 The Triangle (动态规划入门题)
- 动态规划入门-POJ 1163-The Triangle(数字三角形)
- poj 1163-小白算法练习 The Triangle 动态规划
- POJ 1163 The Triangle数塔 动态规划
- 1163 The Triangle 动态规划
- 动态规划(1)1163 The Triangle
- POJ 1163 The Triangle & POJ 3176 Cow Bowling(DP动态规划)
- POJ 1163 The Triangle 动态规划(由下至上+由上至下)双解
- poj 1163 The Triangle 基础DP
- Http状态码大全(200、404、500等)
- 七、Mysql 常用命令
- mysql安装启动等常见问题总结
- 五、MYSQL 常用命令
- Caffe在Ubuntu 16.04的安装配置
- POJ-1163(The Triangle)动态规划基础题
- 简单进度条的实现
- 算法笔记-堆排序
- 蛇形填数 模拟
- qrcode
- OutputStream、Read、Writer类的常用方法
- MATLAB UDP-广播 简单例子
- python读取pdf文档-文件
- 笔记1