数字三角形(线性DP)
作者:
amagi
,
2023-03-12 21:18:09
,
所有人可见
,
阅读 157
#include <iostream>
using namespace std;
int a;
const int N = 1100;
int x[N][N],y[N][N];
int main(){
cin >> a;
for (int i = 1; i <= a; i ++ ) {
for (int j = 1; j <= i; j ++ ) cin >> x[i][j];
}
for (int i = 0; i <= a; i ++ ){
for (int j = 0; j <= i + 1; j ++ ) {
y[i][j] = -1e9;
}
}
y[1][1] = x[1][1];
for (int i = 2; i <= a; i ++ ){
for (int j = 1;j <= i; j ++ ){
y[i][j] = max(y[i - 1][j - 1] + x[i][j] ,y[i - 1][j] + x[i][j]);
}
}
int l = -1e9;
for (int i = 1; i <= a; i ++ ) l = max(l,y[a][i]);
cout << l;
}