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

内存限制:256 MiB
时间限制:1000 ms
标准输入输出
题目类型:传统
评测方式:文本比较

题目描述

汉诺塔问题,条件如下:

这里有 A、B、C 和 D 四座塔。
这里有n个圆盘,n的数量是恒定的。
每个圆盘的尺寸都不相同。
所有的圆盘在开始时都堆叠在塔 A 上,且圆盘尺寸从塔顶到塔底逐渐增大。
我们需要将所有的圆盘都从塔 A 转移到塔 D 上。
每次可以移动一个圆盘,当塔为空塔或者塔顶圆盘尺寸大于被移动圆盘时,可将圆盘移至这座塔上。 请你求出将所有圆盘从塔 A 移动到塔 D,所需的最小移动次数是多少。

输入格式

没有输入。

输出格式

对于每一个整数n(1<=n<=12),输出一个满足条件的最小移动次数,每个结果占一行。

思路

设d[i]为三塔时移i个圆盘的步数。
d[i]=d[i-1]*2+1
d[1]=1;
1<=i<=n;
d[i]=2i-1;
设f[i]为四塔时移i个圆盘的步数。
f[i]=min([j]+d[n-j]+f[j])
f[i]=1;
1<=i<=n;
1<=j<i;

代码

#include<iostream>
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
long long d[30],f[30];
int main()
{int n=12,i,j;memset(f,100,sizeof(f));d[1]=f[1]=1;printf("1\n");for(i=2;i<=n;i++){d[i]=d[i-1]*2+1;//状态转移方程for(j=1;j<i;j++)f[i]=min(f[i],(f[j]<<1)+d[i-j]);//状态转移方程printf("%d\n",f[i]);}return 0;
}

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

  1. Java算法--第二章--查找与排序(2)递归基础--佩波那契最大公约数插入排序汉诺塔

    Java算法–第二章–查找与排序(2)递归基础 一.找重复 1.找到一种划分方法 2.找到递推公式或者等价转换 都是父问题转化为求解子问题 二.找变化的量 变化的量通常要作为参数 三.找出出口 代码: ...

  2. c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔

    本文约2200字,主要讲了C语言基础之函数,递归,数组作为函数参数以及案例.练习题等. 带你进入C语言的世界,入门C语言,后边将持续更新.可以收藏学习.想了解C语言基础之函数,函数的基本概述,函数的调 ...

  3. 逆序输出正整数以及汉诺塔问题

    一.逆序输出正整数 #include<iostream> using namespace std; void print(int n)//递归的思想 {cout<<n%10;i ...

  4. c语言叠罗汉问题解决思路,如何利用分治算法解决 ‘叠罗汉’ 问题,也叫作汉诺塔问题...

    问题: 将A塔的所有盘子移动到C塔,期间可借助B塔,但一直要保证大盘下,小盘上 使用java写了分治算法,化大为小,分而治之,加上递归,便可轻松解决这个问题! static int step = 0; ...

  5. 汉诺塔算法 c语言实验报告,C语言汉诺塔算法原理分析与实践

    汉诺塔游戏的规则:如下图所示,有三个柱子A,B,C,我们要做的是把A柱的所有圆盘,全部转移到C柱上,转移时遵循的规则如下: 1.每次只能移动一个圆盘 2.所有的大圆盘必须在小圆盘的下面 首先假设只有一 ...

  6. 【YBT高效进阶】1基础算法/4深度优先搜索/2数独游戏

    [YBT高效进阶]1基础算法/4深度优先搜索/2数独游戏 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 数独是一种传统益智游戏,你需要 ...

  7. 【ybt高效进阶4-4-3】【luogu P4513】公园遛狗 / 小白逛公园

    公园遛狗 / 小白逛公园 题目链接:ybt高效进阶4-4-3 / luogu P4513 题目大意 给你一个序列,要维护两个操作. 单点修改和在一个区间中找权值最大的子区间的权值. 思路 其实这个是很 ...

  8. 【ybt高效进阶1-5-2】【luogu P3456】山峰和山谷 / GRZ-Ridges and Valleys

    山峰和山谷 / GRZ-Ridges and Valleys 题目链接:ybt高效进阶1-5-2 / luogu P3456 题目大意 对于山谷和山峰,我们这样定义: 它们是一个连通块(其中的高度都相 ...

  9. 【ybt高效进阶5-6-3】耗费体力(单调队列优化DP)

    耗费体力 题目链接:ybt高效进阶5-6-3 题目大意 有一行树,树有高度,要从最左边跳到最右边,如果从高的树跳向低的就不需要花费体力,否则就要花费一点体力. 然后每次给你跳一次最远能跳的距离,问你最 ...

最新文章

  1. ONES 万事联合创始人 amp; CTO 冯斌:企业服务产品的探索实践
  2. spark和python的关系_spark submit和pyspark有什么区别?
  3. 在.net下使用WebBrower控件时屏蔽弹出新窗口
  4. 数字证书文件格式(cer和pfx)的区别
  5. Xtrabackup数据全备份与快速搭建从服务器
  6. LeetCode 2049. 统计最高分的节点数目(DFS)
  7. python中的变量的作用_Python中的变量作用域
  8. php中文切齿,PHP 各种函数
  9. Sharding-JDBC读写分离_实现_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记017
  10. Java保存class文件,[转载]Class文件在JVM中如何存储
  11. linux常用命令之文件操作
  12. 王者回归! Adobe Creative Cloud 打造云时代的创意体验
  13. Time——信仰:梦在远方,路在脚下
  14. 吴恩达深度学习总结(15)
  15. 51单片机的一点感想
  16. 动态路由rip配置命令
  17. 什么是IO流?什么是IO流?
  18. PAD智龙迷城(puzzle and dragon)辅助转珠算法思路和python实现
  19. cordova-plugin-battery-status监听电池状态
  20. html中div被挤下来,移动端布局,底部的div被挤下去,麻烦帮看看

热门文章

  1. 计算机毕业设计之java+javaweb的大学生就业帮助系统-就业招聘网站
  2. 陪王思聪刷了一年微博,他赚了几个亿,你呢?
  3. 华为OD机试 - 相对开音节(C 语言解题)【独家】
  4. Androidproject师进阶之路 :《Android开发进阶:从小工到专家》上市啦!
  5. 【网关路由测试】——网关状态转换测试
  6. 狂风暴雨——风云突变篇:基于数据流层Namsara的ERP系统架构描述
  7. Netty是什么,为什么要使用Netty?
  8. v中国质子交换膜行业发展动态与供需前景预测报告2022-2027
  9. 女程序员:我敲代码养家,老公负责貌美如花
  10. 华为 Ascend Mate 初体验|主流跑分软件测试|特色功能体验|拍照能力对比