您的位置:首页 > 其它

关于动态规划 “数塔”问题~

2011-04-10 21:54 239 查看
问题是这样子的 给出如图所示的一个数塔 ,每次只可以走往左下或者往右下走,要求走到最后数值之和最大?(此类问题可以延伸到求出具体路径还有最后模4最大……)


可以定义一个二位数组,然后从下往上每次得到面一个位置所在的数字都是由其与下面的两个相邻数中较大的数之和所得,最后所得数就是所需答案了,, 具体为dp[i][j]=max{dp[i+1][j],dp[i+1][j+1]}+dp[i][j] 即可。。

我把我写的代码部分放在这边,大牛看到,有不足支出还请帮助纠正一下。

for(i=0;i<n;i++)
for(j=0;j<=i;j++)
scanf("%d",&dp[i][j]);
for(i=n-2;i>=0;i--)
for(j=0;j<=i;j++)
dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+dp[i][j];
printf("%d/n",dp[0][0]);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: