题目链接:http://poj.org/problem?id=3176
#include <cstdio> #include <cstdlib> #include <ctime> #include <iostream> #include <cmath> #include <cstring> #include <algorithm> #include <stack> #include <set> #include <queue> #include <vector> using namespace std; const int maxn = 400; int dp[maxn][maxn]; int a[maxn][maxn]; int main() { //freopen("in.txt", "r", stdin); int n; scanf("%d", &n); for(int i = 1; i <= n; i++) { for(int j = 1; j <= i; j++) { scanf("%d", &a[i][j]); } } dp[1][1] = a[1][1]; for(int i = 1; i <= n; i++) { for(int j = 1; j <= i; j++) { dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + a[i][j]; } } int ans = 0; for(int i = 1; i <= n; i++) ans = max(ans, dp[n][i]); printf("%d\n", ans); return 0; }
时间: 2024-10-21 14:51:41