数塔问题----动态规划
来源:互联网 发布:mac无法更新软件 编辑:程序博客网 时间:2024/06/07 13:35
数塔问题属于最经典最简单的动态规划问题了,这到题目要求是找到一条路径,使得从最顶层走到最下面,所经过的节点的加和最大。
分析也是从上向下分析然后从下向上计算。
如下图所示
9
12 15
10 6 8
2 18 9 5
19 7 10 4 16
下面给出代码
#include <iostream>#include <stdio.h>using namespace std;int num[5][5]={{19,7,10,4,16},{2,18,9,5},{10,6,8},{12,15},{9}};int dp[5][5]={{0},{0},{0},{0},{0}};int max(int x,int y){ return x>y?x:y;}void printWay(int i,int j){ if(i==0) return; else if(dp[i-1][j]>dp[i-1][j+1]) { printf("-->%d",num[i-1][j]); printWay(i-1,j); } else { printf("-->%d",num[i-1][j+1]); printWay(i-1,j+1); }}int main(){ for(int i=0;i<5;i++) { for(int j=0;j<5-i;j++) { if(i==0) dp[i][j]=num[i][j]; else dp[i][j]=max(dp[i-1][j],dp[i-1][j+1])+num[i][j]; printf("%d ",dp[i][j]); } printf("\n"); } printf("最大%d ",dp[4][0]); printf("%d",num[4][0]); printWay(4,0); return 0;}
- 动态规划----数塔问题
- 数塔问题----动态规划
- 动态规划~数塔问题
- 动态规划:数塔问题
- [动态规划]数塔问题
- 动态规划 数塔问题
- 动态规划 数塔问题
- 数塔问题 动态规划
- 动态规划 数塔问题
- 关于动态规划 “数塔”问题~
- 动态规划解决数塔问题
- 动态规划初步-数塔问题
- 动态规划——数塔问题
- 动态规划3_数塔问题
- 算法之动态规划-->>数塔问题
- 动态规划算法之数塔问题
- 动态规划——数塔问题
- 动态规划——数塔问题
- 排序算法
- 网银支付接口资料小总
- Linux学习笔记之开机过程
- 简单工厂模式
- Class.forName() 理解
- 数塔问题----动态规划
- 让用户知道程序执行的百分比 progress of program excution
- 差分约束专题
- AndroidManifest.xml
- ubuntu12.04安装sqldeveloper及各种问题汇总
- HDU 2795
- ubuntu 无法找到软件源,和更新器 update-manager 时
- Objective-C block(代码块)
- 递归算法——全排列