求从顶端到低端经过点的最大和
水dp,状态转移方程
dp[i+1][j]+=max(dp[i][j],dp[i][j-1])
#include<iostream>
using namespace std;
int dp[400][400]= {0};
int cnt;
int main()
{
cin>>cnt;
for(int i=1; i<=cnt; i++)
for(int j=1; j<=i; j++)
cin>>dp[i][j];
for(int i=1; i<cnt; i++)
for(int j=1; j<=i+1; j++)
{
int max=dp[i][j]>dp[i][j-1]?dp[i][j]:dp[i][j-1];
dp[i+1][j]+=max;
}
int max=0;
for(int i=1; i<=cnt; i++)
if(dp[cnt][i]>max)
max=dp[cnt][i];
cout<<max;
}