汉诺塔问题
记录一下思路
出口:
只有一个盘子:n==1
递归公式:
假设有a,b,c 假设有n个盘子,那么将n-1个盘子送到b,再送到c
hanoi(n-1,a,c,b);
hanoi(n-1,b,a,c);
void hanoi(int n, char a, char b, char c)
{//状态:还剩n个盘子,初始柱子,交换柱子,目的柱子
if (1 == n)/* 如果剩下一个盘子,直接从a-->c */
{
cout << n << ":"<<a<<"-->" << c << endl;
}
else
{
/* 把n-1个盘子从a移动到b借助于c */
hanoi(n - 1, a, c, b);
cout << n << ":" << a << "-->" << c << endl;/* 把第n和盘子从a移动c */
hanoi(n - 1, b, a, c);/* 把n-1个盘子从b移动到c借助于a */
}