Acwing-96-奇怪的汉诺塔(递推)

2021-02-04 21:14

阅读:525

标签:ace   题意   问题   print   开始   多少   汉诺塔   表示   content   

链接:

https://www.acwing.com/problem/content/description/98/

题意:

汉诺塔问题,条件如下:

1、这里有A、B、C和D四座塔。

2、这里有n个圆盘,n的数量是恒定的。

3、每个圆盘的尺寸都不相同。

4、所有的圆盘在开始时都堆叠在塔A上,且圆盘尺寸从塔顶到塔底逐渐增大。

5、我们需要将所有的圆盘都从塔A转移到塔D上。

6、每次可以移动一个圆盘,当塔为空塔或者塔顶圆盘尺寸大于被移动圆盘时,可将圆盘移至这座塔上。

请你求出将所有圆盘从塔A移动到塔D,所需的最小移动次数是多少。

思路:

汉诺塔问题的递推式为D[i] = 2*D[i-1]+1.表示先用三个塔将n-1个盘子移到中间,在将一个盘子移到最后,在将n-1个盘子移到最后.
而四个柱子.可以先用四根柱子将j个盘子移到第二根,在将n-j个盘子移到最后一根,在通过四个柱子将j个盘子移到最后一个.

代码:

#include 
using namespace std;

int D[20];
int F[20];

int main()
{
    for (int i = 1;i 

Acwing-96-奇怪的汉诺塔(递推)

标签:ace   题意   问题   print   开始   多少   汉诺塔   表示   content   

原文地址:https://www.cnblogs.com/YDDDD/p/11456472.html


评论


亲,登录后才可以留言!