题目http://hihocoder.com/problemset/problem/1037

  • 一个迷宫有n层,第 i 层有 i 个房间
  • 从第i层的第i个房间(i, i)可以走到第i+1层的第i个房间或第i+1房间(i+1, i)/(i+1, i+1)
  • 每个房间走出去后都不能回头

样例输入

  1. 5 //迷宫的层数
  2. 2
  3. 6 4
  4. 1 2 8
  5. 4 0 9 6
  6. 6 5 5 3 6
    结果: 28
    思路
    动态规划
    maze[i, j] = max(maze[i-1, j], maze[i-1, j-1])
  7.  
  8. 源码
  • 迭代方式,从下而上
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. static int maze[][];//存储到达每一个房间收集到的最多券
  5. static int data[][];//存储每一个房间的券
  6.  
  7. int main()
  8. {
  9. int maxLevel, i = , max = ;
  10. cin >> maxLevel;
  11.  
  12. for (i = ; i < maxLevel; i++)
  13. for (int j = ; j <= i; j++)
  14. cin >> data[i][j];
  15. //由低层到高层计算
  16. maze[][] = data[][];
  17. for (int i = ; i < maxLevel; i++)
  18. {
  19. for (int j = ; j <= i; j++)
  20. {
  21. if (j > && maze[i - ][j] < maze[i - ][j - ])
  22. maze[i][j] = maze[i - ][j - ];
  23. else
  24. maze[i][j] = maze[i - ][j];
  25. maze[i][j] += data[i][j];
  26. }
  27. }
  28. //找出最后一层中券最多的房间
  29. for (i = ; i < maxLevel; i++)
  30. {
  31. int tmp = maxLevel - ;
  32. if (max < maze[tmp][i])
  33. max = maze[tmp][i];
  34. }
  35. cout << max << endl;
  36. return ;
  37. }
  • 递归方式,从上而下
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int maze[][];
  5. int data[][];
  6. void dp(int level)
  7. {
  8. if (level < )
  9. return;
  10. dp(level - );
  11. for (int room = ; room <= level; room++)
  12. {
  13. if (level > )
  14. {
  15. if (room > )
  16. maze[level][room] = maze[level - ][room] > maze[level - ][room - ] ? maze[level - ][room] : maze[level - ][room - ];
  17. else
  18. maze[level][room] = maze[level - ][room];
  19. }
  20. else
  21. maze[level][room] = ;
  22. maze[level][room] += data[level][room];
  23. }
  24. }
  25. int main()
  26. {
  27. int maxLevel, i = , max = ;
  28. cin >> maxLevel;
  29.  
  30. for (i = ; i < maxLevel; i++)
  31. for (int j = ; j <= i; j++)
  32. cin >> data[i][j];
  33. dp(maxLevel - );
  34. for (i = ; i < maxLevel; i++)
  35. {
  36. int tmp = maxLevel - ;
  37. if (max < maze[tmp][i])
  38. max = maze[tmp][i];
  39. }
  40. cout << max << endl;
  41. return ;
  42. }

【hihoCoder】1037 : 数字三角形的更多相关文章

  1. hihoCoder 1037 数字三角形 最详细的解题报告

    题目来源:hihoCoder 1037 数字三角形 解题思路:请好好看看 提示一.提示二.提示三 具体算法(java版,可以直接AC) import java.util.Scanner; public ...

  2. hihocoder 1037 数字三角形

    #1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸 ...

  3. hihoCoder #1037 : 数字三角形 (动态规划)

    题目链接:https://hihocoder.com/problemset/problem/1037# 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋 ...

  4. hihoCoder#1037 : 数字三角形(DP)

    [题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描写叙述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他 ...

  5. poj-3176 Cow Bowling &&poj-1163 The Triangle && hihocoder #1037 : 数字三角形 (基础dp)

    经典的数塔模型. 动态转移方程:  dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+p[i][j]; #include <iostream> #include ...

  6. 【HIHOCODER 1037】 数字三角形

    链接 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国.美国人民的生活非常有意思,经常会有形形色色.奇奇怪怪的活动举办,这不,小Hi和小Ho刚 ...

  7. G:数字三角形

    总时间限制: 1000ms 内存限制: 65536kB描述73   88   1   02   7   4   44   5   2   6   5 (图1) 图1给出了一个数字三角形.从三角形的顶部 ...

  8. 4829 [DP]数字三角形升级版

    4829 [DP]数字三角形升级版  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 从数字三角形的顶部(如图, ...

  9. 【递归】数字三角形 简单dp

    [递归]数字三角形 题目描述 对于大多数人来说,“我们是这么的正常,因此也就这么的平庸.”而天才总是与众不同的,所以当邪狼问修罗王:“老大,你蹲在那儿一动不动看了有半个小时了,蚂蚁有那么好看吗?” 修 ...

随机推荐

  1. UI第八节——UISegmentedControl

    - (void)viewDidLoad {    [super viewDidLoad];    NSArray *items = @[@"消息", @"电话" ...

  2. PHP中global与$GLOBALS['']的区别

    +++ 探讨(一)+++++++++++++++++++++++++++++++++++++++ 很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是 $GL ...

  3. 用Bitbucket搭建博客初探

    本博客是搭建在GitHub上的静态博客,但是由于GitHub免费账户不能创建私有仓库,导致有些东西不想放在GitHub上. 前两天,在免费资源部落上发现了Bitbucket,它和GitHub类似,也是 ...

  4. 交叉编译fftw

    交叉编译 fftw 使用的源码是 fftw-3.2.2-arm.tar.gz 新塘平台arm ./configure --prefix=/usr/local/fftw_arm --host=arm-l ...

  5. SQL Server 临时禁用和启用所有外键约束(高版本向低版本迁移数据)

    --获得禁用所有外键约束的语句 select 'ALTER TABLE [' + b.name + '] NOCHECK CONSTRAINT ' + a.name +';' as 禁用约束 from ...

  6. tp框架之增删改查

    控制器 <?php namespace Home\Controller; use Think\Controller; class CeShiController extends Controll ...

  7. Linux常用命令学习6---(vim的使用)

    先说说我,我使用了这么久的vim,但是完全没有将vim的功能完全利用到,无非就是使用了编辑(i).保存(:w).退出(:q).等简单的编辑,命令,以及NerdTree这一个插件,所以在这里需要重新学习 ...

  8. 几年前做家教写的C教程(之四专讲了指针与汉诺塔问题)

    C语言学习宝典(4) 指针:可以有效的表示复杂的数据结构,能动态的分配动态空间,方便的使用字符串,有效的使用数组,能直接处理内存单元 不掌握指针就没有掌握C语言的精华 地址:系统为每一个变量分配一个内 ...

  9. Gamma校正与线性空间

    基础知识部分 为了方便理解,首先会对(Luminance)的相关概念做一个简单介绍.如果已经了解就跳到后面吧. 我们用Radiant energy(辐射能量)来描述光照的能量,单位是焦耳(J),因为光 ...

  10. [Unity3D]Unity+Android交互教程——让手机"动"起来

    想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用,真不好使,一导入运行就报错,调好错了再运行发现点按钮没反应,反复试了几遍发现还是 ...