首页 > 代码库 > POJ 3176 Cow Bowling

POJ 3176 Cow Bowling

题目链接:http://poj.org/problem?id=3176

 

思路:动规题目,dp[i][j]表示走到第i行选第j个的最大值;

   状态转移方程:dp[i][j] = max(dp[i-1][j-1]+a[i][j],dp[i-1][j]+a[i][j]),其中a[i][j]表示在第i行j列的值。

 

代码:

#include <iostream>#include <cstring>using namespace std;int dp[351][351];int a[351][351];int main(){    int n;    int res;    while(cin>>n)    {        memset(dp,0,sizeof(dp));        res = 0;                for(int i = 1;i<=n;i++)        {            for(int j=1;j<=i;j++)            {                cin>>a[i][j];                dp[i][j] = max(dp[i-1][j]+a[i][j],dp[i-1][j-1]+a[i][j]);            }        }        for(int i=1;i<=n;i++)        {            res = res<dp[n][i]?dp[n][i]:res;        }        cout<<res<<endl;    }    return 0;}