由上图可以看出,贪心算法似乎解决不了这个问题。我们如果使用动态规划

我们可以定义三个数组data,distance,direction

分别存放数据以及每一层要走的权重,还有就是方向。

这个题最大的权重和是59.

我们首先可以从下往上找,会容易一些,因为矩阵呈三角形状态,我们们的元素要走的方向即为右下和正下,我们通过比较该元素正下和右下的大小来选取每一层需要走的元素,最底层不用管,从倒数第二层开始推。

代码如下:

#include<iostream>
#include<algorithm>
using namespace std;
int data[50][50];      //数塔元素数组
int distance1[50][50];  //记录每一次每一层的大小数组
int  direction[50][50];  //记录每次移动的方向0代表向下走,1表示向右下方走 int main()
{int i,j,n;cout<<"请输入数塔元素的行数:"<<endl;cin>>n;for(i = 1;i<=n;i++){for(j = 1;j<=i;j++){cin>>data[i][j];     //输入数塔元素的值distance1[i][j] = data[i][j];direction[i][j] = 0;    //初始化方向向下走 }}for(i = n-1;i>=1;i--){for(j = 1;j<=i;j++){if(distance1[i+1][j] > distance1[i+1][j+1]){distance1[i][j] = distance1[i][j] + distance1[i+1][j];direction[i][j] = 0;}else{distance1[i][j] = distance1[i][j] + distance1[i+1][j+1];direction[i][j] = 1;}}} cout<<"max distance:"<<distance1[1][1]<<endl;j = 1;cout<<"路线:";for(i = 1;i<=n-1;i++){cout<<data[i][j]<<"->";j = j + direction[i][j];}cout<<data[n][j]<<endl;return 0;
}

结果:

有时候DP会解决一些贪心所解决不了的问题

数字三角形、数塔问题(DP)相关推荐

  1. 数字三角形 数塔问题

    求路径最大的值,先将正三角形 先转换成直角三角形 好进行坐标排序 将第一个数设(1,1) 那么就是周围是0: dp[i][j]=max(dp[i-1][j-1],dp[i-1][j]+num[i][j ...

  2. HDU2084 数塔【DP】

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  3. hdu 2084 数塔(DP)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  4. HDU-2084 数塔 经典dp,水

    1.HDU-2084   数塔 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 3.总结:从下往上推,最后归于顶点.方程为  dp[i][j] ...

  5. hdu1176 免费馅饼 ( 数塔(DP))

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. 刘书dp学习笔记(1) 数字三角形与DAG上dp(上)

    我之前没怎么看过刘书,然后前几天看了一下dp,感觉dp观被刷新了- 终于明白为什么说刘书是神书了! 用[]括住的是在下的一些浅见与笔记. 顺便一提,在下不保证代码是能过评测的,因为只试了其中几个数据. ...

  7. Bailian2760 数字三角形【DP】

    2760:数字三角形 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可 ...

  8. 数字三角形问题(数塔问题)

    数字三角形问题(数塔问题) Description 下图给出了一个数字三角形,请编写一个程序,计算从顶至底的某处的一条路径,使该路径所经过的数字和最大 Input 有很多个测试案例,对于每一个测试案例 ...

  9. codevs——1220 数字三角形(棋盘DP)

     时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一 ...

  10. LQ0072 数字三角形【DP】

    题目来源:蓝桥杯2020初赛 C++ C组I题 题目描述 上图给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径. 对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和 ...

最新文章

  1. oracle 修改默认日期格式_查看MySQL查询计划的方法和格式
  2. 感动哭!Starbreeze发布《收获日2》VR版
  3. 【Python-ML】神经网络激励函数-Softmax
  4. Zynq定时器系统(上)—全局和私有定时器
  5. Vue 中的 v-if 和 v-show 修饰符
  6. 数学和物理太难?这些动图让你秒懂抽象概念
  7. hihoCoder #1143 : 骨牌覆盖问题·一
  8. python 基于机器学习识别验证码
  9. 视觉检测无脊椎机器人或vipir_深入浅出人工智能前沿技术—机器视觉检测,看清人类智慧工业...
  10. python random_Python random() 函数
  11. Java基础知识之循环语句(for循环、while循环)
  12. 串口发送接收浮点型数据
  13. 中国内镜下血管采集市场趋势报告、技术动态创新及市场预测
  14. ansible执行拷贝/脚本/任务计划/yum/service
  15. 论文赏析[NAACL19]一个更好更快更强的序列标注成分句法分析器
  16. jquery程序 windows移植到linux显示不了,Windows10 + WSL 使用Linux图形界面程序
  17. ios opencv图片处理_iOS_OpenCV图片轮廓检测
  18. mybatisPlus代码自动生成
  19. 什么是javaEE、什么是JavaSE、什么是javaME?
  20. 关于一个正弦波程序表格生成器

热门文章

  1. 小程序获取微信登陆用户
  2. 单龙芯3A3000-7A1000PMON研究学习-(4)撸起袖子干-makefile(a)
  3. DS18B20数字温度计 (二) 测温, ROM和CRC算法
  4. Spring Cloud 与 Dubbo 功能对比
  5. linux桌面不能打开终端,Ubuntu无法用快捷键或图标打开终端
  6. maven atuo import
  7. 计算机软件著作权的软件全称,软件著作权名称要求是什么
  8. 广东再增一项重大跨海工程 黄茅海跨海通道将开建
  9. 恒流源驱动电路 随笔一
  10. mapreduce 和hive 的区别