数字三角形的问题,初步的动态规划
思路:从n-1行开始,每一个位置的值可以用当前位置的值加上当前位置下面2个可加值的最大值,一次类推上去,直到推到顶点,即可求出其最大值!
AC代码:
#include<stdio.h>
#include<string.h>
int main()
{
long dp[400][400];
long i,j,n,maxx;
scanf("%d",&n);
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
scanf("%ld",&dp[i][j]);
for(i=n-1;i>0;i--)
for(j=1;j<=i;j++){
maxx=dp[i+1][j]>dp[i+1][j+1]?dp[i+1][j]:dp[i+1][j+1];
dp[i][j]+=maxx;
}
printf("%ld\n",dp[1][1]);
return 0;
}
POJ 3176 Cow Bowling,布布扣,bubuko.com
原文地址:http://blog.csdn.net/u012313382/article/details/37736623