题解
- 线性DP数字三角形模型,题中说最多2n-1个时间,就说明只能是向右和向下到达右下角,不能往回走,摘花生是让求最大,这个是让求最小,求最小我们就要初始化边界
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
const int INF = 0x3f3f3f3f;
int n;
int w[N][N];
int f[N][N];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> w[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i == 1 && j == 1) f[i][j] = w[i][j];
else {
f[i][j]=INF;
if (i > 1) f[i][j] = min(f[i][j], f[i - 1][j] + w[i][j]);
if (j > 1) f[i][j] = min(f[i][j], f[i][j - 1] + w[i][j]);
}
}
}
cout << f[n][n] << endl;
return 0;
}