数字三角形的问题,初步的动态规划
思路:从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