原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1002
思路:基本dp,dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+a[i][j], 然后这题可以只开一个数组 优化空间
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1000005;
int dp[505][505];
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++) {
scanf("%d", &dp[i][j]);
}
}
for (int i = n - 2; i >= 0; i--) {
for (int j = 0; j <= i; j++) {
dp[i][j] += max(dp[i + 1][j], dp[i + 1][j + 1]);
}
}
printf("%d\n", dp[0][0]);
return 0;
}