[算法]汉诺塔
Posted tailiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[算法]汉诺塔相关的知识,希望对你有一定的参考价值。
#include <iostream>
#include <cmath>
using namespace std;
int hannuota(int n, string a, string b, string c)
{
if (n == 1)
{
//只有一个盘子的情况下直接将第一个塔上的盘子移动到第三个塔
printf("塔%s------>塔%s
", a.c_str(), c.c_str());
}
else {
//1.先将第一个塔的n-1个盘子全部通过第三个塔移动到第二个塔上
hannuota(n - 1, a, c, b);
//2.再将剩下的一个盘子移动到第三个塔上
printf("塔%s------>塔%s
", a.c_str(), c.c_str());
//3.最后将第二个塔上的盘子通过第一个塔移动到第三个塔上
hannuota(n - 1, b, a, c);
}
return 1;
}
int main()
{
printf("盘子移动如下:
");
hannuota(3, "A", "B", "C");//三个盘子,三个塔
cout << "hello world" << endl;
return 0;
}
以上是关于[算法]汉诺塔的主要内容,如果未能解决你的问题,请参考以下文章