AcWing 898. 数字三角形 C
原题链接
简单
作者:
LaChimere
,
2021-06-04 11:27:45
,
所有人可见
,
阅读 257
C
#include <stdio.h>
#include <limits.h>
#define MAXSIZE 505
#define max(a,b) ((a)>(b)?(a):(b))
int n, f[MAXSIZE][MAXSIZE];
void init() {
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
for (int j = 0; j <= i; ++j) {
scanf("%d", &f[i][j]);
}
}
}
int main() {
init();
for (int i = 1; i < n; ++i) {
for (int j = 0; j <= i; ++j) {
int preSum = INT_MIN;
if (j > 0) {
preSum = f[i-1][j-1];
}
if (i > j) {
preSum = max(preSum, f[i-1][j]);
}
f[i][j] += preSum;
}
}
int res = INT_MIN;
for (int j = 0; j < n; ++j) {
res = max(res, f[n-1][j]);
}
printf("%d\n", res);
return 0;
}