poj 3176 -- Cow Bowling (dp)

求从顶端到低端经过点的最大和

水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;
}

你可能感兴趣的:(poj 3176 -- Cow Bowling (dp))