51 nod 1002 数塔取数问题
#include <iostream> using namespace std; int dp[600][600]; int main() { int n; cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ cin>>dp[i][j]; } } for(int i=n;i>=1;i--){ for(int j=1;j<=i;j++){ dp[i-1][j]+=max(dp[i][j],dp[i][j+1]); } } cout<<dp[1][1]<<endl; return 0; }
从下往上开始加。