当前位置: 首页> 房产> 市场 > <题海拾贝>[递归]1.汉诺塔

<题海拾贝>[递归]1.汉诺塔

时间:2025/7/13 5:20:55来源:https://blog.csdn.net/m0_65140768/article/details/139610118 浏览次数:0次

链接

面试题 08.06. 汉诺塔问题 - 力扣(LeetCode)

函数头设计–重复子问题

假设是a,b,c三个柱子,a上面有n个盘子

所以函数头要三个数组,还要知道这次a柱上面的盘子数size

所以函数头如下

void dfs(vector<int>& A, vector<int>& B, vector<int>& C,int size)

函数体设计–某个子问题

步骤:

  1. 把a的n-1个盘子借助c转移到b上
  2. 把a最底下的盘子转移到c盘子
  3. 把b的n-1个盘子借助a转移到c
dfs(A,C,B,size-1);C.push_back(A.back());
A.pop_back();dfs(B,A,C,size-1);

递归出口

a只剩最下面的盘子时,直接转移到c上面即可

代码实现

class Solution 
{
public:void dfs(vector<int>& A, vector<int>& B, vector<int>& C,int size){if(size==1){C.push_back(A.back());A.pop_back();return;}dfs(A,C,B,size-1);C.push_back(A.back());A.pop_back();dfs(B,A,C,size-1);}void hanota(vector<int>& A, vector<int>& B, vector<int>& C) {dfs(A,B,C,A.size());}
};
关键字:<题海拾贝>[递归]1.汉诺塔

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: