原理:利用了递归的思想
全部代码以及部分实验结果
#include <stdio.h>
void move(int paraPlates,char x,char y,char z)//整体目的是将所有盘子都移动到C柱子上去
{
if(paraPlates==1)
{
printf("%c----->%c\r\n",x,z);
}
else
{
move(paraPlates-1,x,z,y);//
printf("%c----->%c\r\n",x,z);
move(paraPlates-1,y,x,z);
}
}
void moveTest()
{
int n;
n=2;
printf("move %d Plates\r\n",n);
move(n,'A','B','C');
n=3;
printf("move %d Plates\r\n",n);
move(n,'A','B','C');
}
int main()
{
moveTest();
return 0;
}
总体思想,因为不能将大的盘子放在小的盘子上面,所以最大的那个盘子位置不会影响到上面n-1个盘子的移动,因此我们只需要将上面的盘子都移动到另一个柱子上然后将最后一个盘子移动到目标柱子上然后将前面n-1个盘子以同样的原理移动就可以做到将所有的盘子都移动到目标柱子上面了。