poj-3176-Cow Bowling-dp

题意:

给你一堆数,让你从上往下走,走最长的一个路径到达最下面。

做法:

从下往上走。dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1])

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    int n,i,j;
    int dp[351][351];
    cin>>n;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=i;j++)
        {
            cin>>dp[i][j];
        }
    }
    for(i=n-1;i>=1;i--)
    {
        for(j=1;j<=i;j++)
        {
            dp[i][j]=max(dp[i][j]+dp[i+1][j],dp[i][j]+dp[i+1][j+1]);
        }
    }
    printf("%d\n",dp[1][1]);
    return 0;
}


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