pku 1163 Triangle

 #include <iostream> #include <algorithm> using namespace std; #define MAX 351 int map[MAX][MAX]; int sum[MAX][MAX]; bool cmp(const int& lhs, const int& rhs) { return lhs < rhs; } int main() { int n; scanf("%d", &n); for(int i = 1; i <= n; ++i) for(int j = 1; j <= i; ++j) scanf("%d", &map[i][j]); sum[1][1] = map[1][1]; for(int i = 2; i <= n; ++i) for(int j = 1; j <= i; ++j) if(j >= 2 && j <= i-1) sum[i][j] = max(sum[i-1][j-1] + map[i][j], sum[i-1][j] + map[i][j]); else if(j <= 1) sum[i][j] = sum[i-1][j] + map[i][j]; else sum[i][j] = sum[i-1][j-1] + map[i][j]; int m = -1; for(int i = 1; i <= n; ++i) if(sum[n][i] > m) m = sum[n][i]; cout << m << endl; return 0; }

你可能感兴趣的:(pku 1163 Triangle)