[AcWing] 1015. 摘花生(C++实现)数字三角形模型模板题
1. 题目
2. 读题(需要重点注意的东西)
读题: 从左上角走到右下角,只能向右或者向下走,走到终点时的最大值是多少?
思路:
3. 解法
---------------------------------------------------解法---------------------------------------------------
#include<iostream>
using namespace std;
const int N = 110;
int n,m; // n行m列
int w[N][N];
int f[N][N];
int main(){
int T;
cin >> T;
while(T--){
cin >> n >> m;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
cin >> w[i][j];
for(int i = 1; i <= n; i++)
for(int j = 1;j <= m; j++)
f[i][j] = max(f[i-1][j],f[i][j-1]) + w[i][j];
cout << f[n][m] << endl;
}
return 0;
}
可能存在的问题
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 动态规划
- 数字三角形模型
6. 总结
数字三角形模型模板题,可以发展为不同的数字三角形题目
数字三角形模型的特征:
1. 从左上角走到右下角
2. 走一条或n条路径
3. 取最大值或最小值