奇怪汉诺塔

ybtoj DP-1-2

题目大意

求四根柱子的汉诺塔问题

输出

共12行
每行输出第一根柱子有i个圆盘的最小步数

解题思路

设aia_iai​表示三根柱子,第一根柱子有i个圆盘的步数
很显然是先移i-1个到第二根,再移最大的到第三根,再把i-1个移过去
ai=2×ai−1+1a_i=2\times a_{i-1}+1ai​=2×ai−1​+1
现在再考虑四根柱子的
可以先把其中若干移到第二根,然后把剩下的移到第四根,最后把第二根的移过去
fi=min⁡j=0i−1{2×fj+ai−j}f_i=\min_{j=0}^{i-1}\begin{Bmatrix}2 \times f_j + a_{i-j}\end{Bmatrix}fi​=j=0mini−1​{2×fj​+ai−j​​}

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
int a[100], f[100];
int main()
{memset(f, 127/3, sizeof(f));a[1] = 1;f[1] = 1;printf("1\n");for (int i = 2; i <= 12; ++i){a[i] = a[i - 1] * 2 + 1;for (int j = 0; j < i; ++j)f[i] = min(f[i], f[j] * 2 + a[i - j]);//递推printf("%d\n", f[i]);}return 0;
}

【DP】奇怪汉诺塔(ybtoj DP-1-2)相关推荐

  1. 【YBT高效进阶】1基础算法/1逆推算法/2奇怪汉诺塔

    [YBT高效进阶]1基础算法/1逆推算法/2奇怪汉诺塔 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 汉诺塔问题,条件如下: 这里有 ...

  2. 牛客 - 汉诺塔(思维+dp)

    题目链接:点击查看 题目大意:给出 n 个木板,尺寸分别为 Xi * Yi ,现在要求将其分为最少的组,每一个组中都可以通过重新排序使得每个木板都严格递增,此处递增的意思为严格满足 Xi > X ...

  3. h0043. 奇怪的汉诺塔

    汉诺塔问题,条件如下: 1.这里有A.B.C和D四座塔. 2.这里有n个圆盘,n的数量是恒定的. 3.每个圆盘的尺寸都不相同. 4.所有的圆盘在开始时都堆叠在塔A上,且圆盘尺寸从塔顶到塔底逐渐增大. ...

  4. 汉诺塔(3塔、4塔思路详记)

    时隔多年,忽然又回来了. 记录一个小小的汉诺塔2333 没想到3年过去,我写递推还要看题解才能想明白/(ㄒoㄒ)/~~ #include<iostream> #include<cst ...

  5. $bzoj1019-SHOI2008$ 汉诺塔 $dp$

    题面描述 汉诺塔由三根柱子(分别用\(A\ B\ C\)表示)和\(n\)个大小互不相同的空心盘子组成.一开始\(n\)个盘子都摞在柱子\(A\)上,大的在下面,小的在上面,形成了一个塔状的锥形体. ...

  6. BZOJ 1019: [SHOI2008]汉诺塔( dp )

    dp(x, y)表示第x根柱子上y个盘子移开后到哪根柱子以及花费步数..然后根据汉诺塔原理去转移... ------------------------------------------------ ...

  7. 奇怪的汉诺塔 Four Column Hanoi Tower

    奇怪的汉诺塔 题面 传送门 思路 首先考虑三个柱子的汉诺塔: 假设当前有 n n n个盘子: 先把前n-1个盘子从A柱移到B柱,然后把A柱上剩的那一个盘子移动到C柱最后把B柱上的那n-1个盘子移动到C ...

  8. 《算法竞赛进阶指南》打卡-基本算法-AcWing 96. 奇怪的汉诺塔:递推

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 本题的汉诺塔问题是n个盘子4个塔,最基本的汉诺塔是n个盘子3个塔.本题是要在后者的基础上来做. 设d[i]表示i盘3塔问题的最小移动 ...

  9. 96. 奇怪的汉诺塔【递推】

    这是一道很经典的问题. 先看3个塔的情况 需要注意的是,这里的汉诺塔移动并无只可以移动到相邻塔的需求.即可以直接从A移到C. 设d[i]表示将i个盘子从这里移到其他除它之外塔的步数 ,总塔的数量为3 ...

最新文章

  1. java创建描述文件,IT技术交流:Java 轻量级整合开发
  2. 数据结构习题精解 C语言实现+微课视频(习题解答、研考试题、微课视频)
  3. QFile和C语言对文件操作的性能比较.--读取double型二进制数据文件
  4. webmin mysql_MySQL+Webmin轻松创建数据库
  5. Salesforce新增Einstein AI支撑的自动化功能
  6. Typora免费版,不是破解版,是没有升级的老版本,用的还是比较舒服的
  7. 多功能智慧路灯杆商业模式解决方案
  8. Mac中安装Windows虚拟机给小米手机刷Root
  9. IBM服务器微软集群安装
  10. nu.xom:Attribute
  11. linux添加mx记录,linux下nslookup操作实例,查找域名的a记录、mx记录、cname记录、ns记录...
  12. java-net-php-python-java西藏文库计算机毕业设计程序
  13. 头歌 CC++基本输入输出
  14. 高分辨率对地观测系统重大科技专项简介
  15. 如何通过名字判断一个印度人的种姓
  16. 关于系统中的流水帐号
  17. python进行XYZ-NEU-BLH坐标转换
  18. ValidateUtil 验证工具类
  19. 联想计算机boss设置,联想电脑如何进行bios设置 联想电脑bios设置教程
  20. oracletns中不存在名称为_科比不会为黄蜂打球,你觉得科比能去骑士,不存在的...

热门文章

  1. java流的序列化_Java中的对象流和序列化介绍
  2. 索尼android 怎么截屏快捷键,索尼XZ Premium怎么截屏 2种索尼XZ Premium截图方法
  3. 禁用笔记本键盘_如何禁用/启用笔记本内置键盘?
  4. 解决异步问题,教你如何写出优雅的promise和async/await,告别callback回调地狱!
  5. 十一届蓝桥杯国赛 玩具蛇-dfs
  6. The Water Bowls POJ - 3185(开关问题+暴力)
  7. __syncthreads()
  8. Eclipse调试方法
  9. GuGuFishtion(2018 Multi-University Training Contest 7)
  10. XXI Open Cup. Grand Prix of Korea I. Query On A Tree 17 树剖 + 二分 + 树带权重心