欢迎来到Cefler的博客😁
🕌博客主页:那个传说中的man的主页
🏠个人专栏:题目解析
🌎推荐文章:题目大解析(3)
目录
- 👉🏻汉诺塔
👉🏻汉诺塔
原题链接:汉诺塔问题
mycode:
class Solution {
public:
void difs(vector<int>& x, vector<int>& y, vector<int>& z,int n)
{
if(n==1)
{
z.push_back(x.back());
x.pop_back();//记得将原柱子的盘子删除
}
else
{
difs(x,z,y,n-1);//x借助z柱将n-1个盘子挪动到y柱上
z.push_back(x.back());//此时将底部盘子挪动到z柱子上
x.pop_back();
difs(y,x,z,n-1);//再将y柱上n-1个盘子借助x柱挪动到z上
}
}
void hanota(vector<int>& a, vector<int>& b, vector<int>& c) {
int n = a.size();
difs(a,b,c,n);
}
};