Hanoi Tower
汉诺塔问题解决思路,递归
当只有一个盘子时直接将其从A柱移动到C柱(假设有A,B,C三个柱);
但有n个盘子时,先将上面n-1个盘子借助C柱移动到B柱,之后将第n个盘子移动到C柱,最后将剩余n-1个盘子借助A柱移动到C柱,完成;
汉诺塔问题解法如上,解决思路主体是递归,参考过其他博客的解决方法,如有冒犯,请联系我,立即自删。以下为个人编码过程
#include <iostream>
using namespace std;
/**
* 汉诺塔问题
* 递归方法解决,参考过网上其他博客解法
* 以下为个人编码过程
*/
int pcount = 1;
void move(int n, char from, char to){
cout<<pcount++<<':'<<"move "<<n<<" from "<<from<<" to "<<to<<endl;
}
void hanoi(int n, char from , char to, char by){
if(n == 1){
move(n,from,to);
}else{
hanoi(n-1,from,by,to);
move(n,from,to);
hanoi(n-1,by,to,from);
}
}
int main()
{
cout<<"input n : ";
int n;
cin>>n;
hanoi(n,'A','C','B');
cout << "Hello world!" << endl;
return 0;
}
个人github
都毕业好一阵子了,还是这个水平