poj-3176-Cow Bowling

这是一道很水的动态规划题,就跟小紫上面那个数字三角形差不多吧...第一次自己把动态规划写出来,虽然题目很水。还能优化,但是比较懒,懒得优化了,我相信会动态规划的人这道题应该都会做。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int a[355][355],dp[355][355];

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        memset(dp,0,sizeof(dp));
        memset(a,0,sizeof(a));
        for(int i=0;i<n;i++)
            for(int j=0;j<=i;j++)
            scanf("%d",&a[i][j]);
        for(int i=n-1;i>=0;i--)
            for(int j=n-1;j>=0;j--)
        {
            dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j];
            //printf("i=%d j=%d dp=%d\n",i,j,dp[i][j]);
        }
        int maxx=-1;
        for(int i=0;i<=n;i++)
            for(int j=0;j<n;j++)
                if(dp[i][j]>maxx)
                maxx=dp[i][j];
            printf("%d\n",maxx);
    }
}


你可能感兴趣的:(动态规划,Don)