AcWing - 96. 奇怪的汉诺塔【DP】 题解 桃扇骨 2021-07-24 15:28 272阅读 0赞 ### 目录 ### * * * 1.题目 * 2.代码 ### 1.题目 ### 汉诺塔问题,条件如下: 1、这里有A、B、C和D四座塔。 2、这里有n个圆盘,n的数量是恒定的。 3、每个圆盘的尺寸都不相同。 4、所有的圆盘在开始时都堆叠在塔A上,且圆盘尺寸从塔顶到塔底逐渐增大。 5、我们需要将所有的圆盘都从塔A转移到塔D上。 6、每次可以移动一个圆盘,当塔为空塔或者塔顶圆盘尺寸大于被移动圆盘时,可将圆盘移至这座塔上。 请你求出将所有圆盘从塔A移动到塔D,所需的最小移动次数是多少。 河内塔.jpg 汉诺塔塔参考模型 **输入格式** 没有输入 **输出格式** 对于每一个整数n(1≤n≤12),输出一个满足条件的最小移动次数,每个结果占一行。 **输入样例:** 没有输入 **输出样例:** 参考输出格式 ### 2.代码 ### #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn = 15; int d[maxn], f[maxn]; //d[i]表示在三塔模式下,移动i个圆盘需要的最少次数。f[i]表示在四塔模式下,移动i个圆盘需要的最少次数 int main() { d[1] = 1; //一个圆盘只需要移动一次 for (int i = 1; i <= 12; i++) { d[i] = 2 * d[i - 1] + 1; //从A柱把前i - 1个盘移动到B柱,再把第i个盘移动到C柱,把B柱i - 1个盘移动到C柱 } memset(f, 0x3f, sizeof(f)); f[1] = 1;//一个圆盘只需要移动一次 for (int i = 2; i <= 12; i++) { for (int j = 1; j < i; j++) { f[i] = min(f[i], f[j] * 2 + d[i-j]); // 把前j个盘移动到B柱,把i - j个按照三塔模式移动到D柱,把B柱j个盘移动到D柱 } } for (int i = 1; i <= 12; i++) { cout << f[i] << endl; } return 0; }
相关 汉诺塔 package com.someusefuldesign.demo; /假设有A B C三个柱子移动的顺序为: / public class 妖狐艹你老母/ 2022年08月13日 15:54/ 0 赞/ 248 阅读
相关 汉诺塔 Problem Description 汉诺塔(又称河内塔)问题是印度的一个古老的传说。 开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒A、B和C,A上面套着 Dear 丶/ 2022年06月17日 05:28/ 0 赞/ 326 阅读
相关 汉诺塔 汉诺塔 Time Limit: 1000MS Memory Limit: 65536KB [Submit][] [Statistic][] Prob 约定不等于承诺〃/ 2022年06月11日 03:24/ 0 赞/ 276 阅读
相关 汉诺塔 \include<stdio.h> void hanoi(int n,char A,char B,char C) \{ if(n==1) printf("Move s 逃离我推掉我的手/ 2022年06月10日 12:57/ 0 赞/ 324 阅读
相关 汉诺塔 include <stdio.h> void hannuota(int n,char A,char B,char C){ if(1 == n){ 川长思鸟来/ 2022年06月07日 13:06/ 0 赞/ 244 阅读
相关 汉诺塔 汉诺塔 Time Limit: 1000 ms Memory Limit: 65536 KiB [Submit][] [Statistic][] Problem D 怼烎@/ 2022年05月29日 05:58/ 0 赞/ 291 阅读
相关 汉诺塔 def move(n, a, b, c): if n == 1: \ 如果a只有1盘子 print(a, '-->', c); \ 直接把盘子从a移到c els 迷南。/ 2022年05月18日 22:25/ 0 赞/ 353 阅读
相关 奇怪的汉诺塔 题目链接:[https://www.acwing.com/problem/content/98/][https_www.acwing.com_problem_content_9 Love The Way You Lie/ 2022年01月22日 06:09/ 0 赞/ 170 阅读
相关 AcWing - 96. 奇怪的汉诺塔【DP】 题解 目录 1.题目 2.代码 1.题目 汉诺塔问题,条件如下: 1、这里有A、B、C和D四座塔。 2 桃扇骨/ 2021年07月24日 15:28/ 0 赞/ 273 阅读
还没有评论,来说两句吧...