简单DP嘛。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <set> #include <stack> #include <cmath> #include <map> #include <ctime> #define MAXN 111111 #define INF 100000007 using namespace std; int a[22][22]; int dp[22][22]; int main() { for(int i = 1; i <= 15; i++) for(int j = 1; j <= i; j++) cin >> a[i][j]; dp[1][1] = a[1][1]; for(int i = 2; i <= 15; i++) for(int j = 1; j <= i; j++) { if(j > 1) dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + a[i][j]); dp[i][j] = max(dp[i][j], dp[i - 1][j] + a[i][j]); } int ans = 0; for(int i = 1; i <= 15; i++) ans = max(ans, dp[15][i]); cout << ans << endl; return 0; }