首页 > 代码库 > POJ3176:Cow Bowling(数字三角形问题)

POJ3176:Cow Bowling(数字三角形问题)

 地址:http://poj.org/problem?id=3176

题目解析:没什么好说的,之前上课时老师讲过。从下往上找,每一个三角形的顶点可由两个角加上顶点的值 两种方式得到 ,用dp数组保存下最大值即可。

#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <queue>#include <math.h>#define N 400#define inf 0x3f3f3f3ftypedef int ll;using namespace std;int a[N][N],dp[N][N];int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        for(int i=1; i<=n; i++)        {            for(int j=1; j<=i; j++)                scanf("%d",&a[i][j]);        }        for(int i=1; i<=n; i++)        {            dp[n][i]=a[n][i];        }        for(int i=n-1; i>=1; i--)        {            for(int j=1; j<=i; j++)            {                dp[i][j]=max(a[i][j]+dp[i+1][j],a[i][j]+dp[i+1][j+1]);            }        }        printf("%d\n",dp[1][1]);    }    return 0;}

 

POJ3176:Cow Bowling(数字三角形问题)