hdu2084数塔
愉快的刷水题!!!
#include<cstdio> #include<iostream> #include<cstring> using namespace std; const int maxn = 110; int n, c, data[maxn][maxn], dp[maxn][maxn]; inline int qread(){ register int ch = getchar(), x = 0, flag = 0; while(ch < '0' || ch > '9') {if(ch == '-') flag = 1; ch = getchar();} while(ch >= '0' && ch <= '9') x = 10 * x + ch - 48, ch = getchar(); return flag ? -x : x; } int main(void){ c = qread(); while(c--){ n = qread(); memset(dp, 0, sizeof(dp)); for(int i = 1; i <= n; ++i) for(int j = 1; j <= i; ++j) data[i][j] = qread(); for(int i = n; i >= 1; --i) for(int j = 1; j <= i; ++j) dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + data[i][j]; printf("%d\n", dp[1][1]); } }
---恢复内容结束---