汉诺塔的实现,包含伪代码,以及输出流程版本和修改数组版本。
#include <iostream>
using namespace std;
void hanoiPseudocode(int n, char A, char B, char C)
{
如果是一个盘子
直接将盘子从A移到C;
否则
将 n-1个盘子借助C移到B;
直接将盘子从A移到C;
将B上的n-1个盘子借助A移到C;
}
void hanoi(int n, char x, char y, char z)
{
if(n == 1)
cout << "move " << n << " from " << x << " to " << z << "\n";
else
{
hanoi(n-1,x,z,y);
cout << "move " << n << " from " << x << " to " << z << "\n";
hanoi(n-1,y,x,z);
}
}
void Move(int size,int *x, int *z)
{
int i = 0, j = 0;
while (x[i]!=-1 && i < size) i++;
while (z[j]!=-1 && j < size) j++;
z[j] = x[i-1];
x[i-1] = -1;
for (int i = 0; i < size; i++)
{
cout << x[i] << " ";
}
cout <