三塔:递推式:d[n] = 2 * d[n-1] + 1

即把前n-1个盘子从A柱移到B柱,然后把A柱上剩的那一个盘子移动到C柱,最后把B柱上的那n-1个盘子移动到C柱上

四塔:递推式:f[n] = min{2 * f[i] + d[n - i]}

初始化:f[1] = 1(一个盘子在4塔模式下移动到D柱需要1步)
先把i个盘子在4塔模式下移动到B柱,
然后把n-i个盘子在3塔模式下移动到D柱(因为不能覆盖到B柱上,就等于只剩下A、C、D柱可以用)
最后把i个盘子在4塔模式下移动到D柱
考虑所有可能的i取最小值,即得到上述递推公式

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int d[10000], f[10000];
int main() {int n;cin >> n;d[1] = 1;for (int i = 2; i <= n; i++)d[i] = 2 * d[i - 1] + 1;memset(f, 0x3f3f3f3f, sizeof(f));f[1] = 1;for (int i = 2; i <= n; i++)for (int j = 1; j < i; j++)f[i] = min(f[i], 2 * f[j] + d[i - j]);for (int i = 1; i <= n; i++)cout << f[i] << endl;return 0;
}

四柱子汉诺塔—递归—递推相关推荐

  1. 四柱子汉诺塔c语言程序代码,汉诺塔n=4(4个盘)c语言递归编程代码

    满意答案 /**************************** 汉诺塔的算法就3个步骤: 第一,把a上的n-1个盘通过c移动到b. 第二,把a上的最下面的盘移到c.a成了空的. 第三,因为n-1 ...

  2. hdu 2064汉诺塔III 递推

    汉诺塔递推题,比汉诺塔多了一个限制条件,盘子只允许在相邻的柱子之间移动. 分析: 第1步:初始状态: 第2步:把上面的n-1个盘移到第3号杆上: 第3步:把第n个盘从1移到2: 第4步:把前n-1个从 ...

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

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

  4. 汉诺塔VII(递推,模拟)

    汉诺塔VII Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

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

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

  6. Strange Towers of Hanoi 汉诺塔问题及其升级(递推)四个汉诺塔问题

    今天学习递推的汉诺塔问题,非常的有趣 文章目录 1.汉诺塔问题来源 分析 2.Strange Towers of Hanoi[DP][递推] 题目大意: 思考 解题步骤: 1.汉诺塔问题来源 汉诺塔( ...

  7. 三柱汉诺塔四柱汉诺塔

    汉诺塔问题_哔哩哔哩_bilibili 三柱汉诺塔,从整体来看,分为三部 1.先让n-1个盘先由a柱放在b柱 2.把第n个盘由a柱放在c柱 3.将这n-1个盘由b柱移动到c柱 而其中的递归过程就是直到 ...

  8. 数据结构之栈与递归的应用(汉诺塔递归解法)

    上一节简单的讲述了递归的实现与简单应用,接下来我们说一下另一个经典应用. 汉诺塔递归解法 一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子, ...

  9. 汉诺塔递归的c语言实现(递归)

    对于递归来讲, 汉诺塔实际是经典到不能再经典的例子了,   每个数据结构的教材对会提到. 但是到最后只给出一段类似下面的一段代码: #include<stdio.h>void move(i ...

最新文章

  1. 增强现实:一场正在到来的医疗革命
  2. PostgreSQL操作问题(转载)
  3. [MySql] - 解决部署的服务器没有安装MySql Connector
  4. C# 获取鼠标相对当前窗口坐标的方法
  5. Java通过Executors提供四种线程池
  6. feignclient注解使用_从 Feign 使用注意点到 RESTFUL 接口设计规范
  7. where T:new() 是什么意思
  8. 深入理解DDD中的聚合
  9. git解决error: failed to push some refs to ‘xxx(远程库)‘
  10. select * from什么意思_SQL入门教程第15课:什么是内连接
  11. 1.maven下仅shiro框架对shiro的测试使用
  12. matlab画圆的命令_matlab画圆命令
  13. 全面升级,淘宝/天猫api接口大全
  14. 计算机中win是哪个版本,win7系统应该选择哪个版本比较好
  15. 09-10c语言试卷a,09C语言试卷A-B(试题).doc
  16. PL/SQL语言简单案例
  17. redmi k60参数 红米k60怎么样 redmi k60优缺点
  18. Meld——目录文件对比工具
  19. vivado生成bit流错误:Combinatorial Loop Alert
  20. filetransferdmg魅族下载_filetransfer.dmg魅族下载

热门文章

  1. Mathematica,亮瞎你的双眼
  2. cadence版图设计步骤(包括drc和lvs)
  3. JAVA内存分析:基于dump内存溢出快照分析
  4. Hrm-人力资源系统开发笔记05
  5. Web开发应了解的5种设计模式
  6. 苹果手机悬浮窗怎么打开_悬浮窗搜题神器_悬浮窗搜题神器app源码苹果软件预约 v1.0...
  7. 【学习日记2023.6.9】之 SpringCloud入门(认识微服务_服务拆分和远程调用RestTemplate_Eureka注册中心_Ribbon负载均衡_Nacos注册中心)
  8. 判断输入年份是否是闰年
  9. 快递100 查询物流信息 Java
  10. 验证phone是否注册微信