思路:和河内塔类似,采用递归
1,将n个盘子,两两(不同颜色相同大小的盘子)组成一组共n/2组(A)
2,n/2组即类似于河内塔,将n/2-1组进行河内塔操作,即把A中上面的n/2-1组划到C,此时A中存在第n/2组,C中n/2-1组(第一次河内塔操作)
3,将A中的第n/2组划到B,然后进行第二次河内塔操作,把C中的所有划到A中(此时A中有n/2-1组,B中是第n/2组)
4,将B中的第n/2组分开,即B中划一个盘子给C(此时B和C中分别存在一个盘子,分别为两种颜色的最大的一个)
5 ,循环(对A中剩余的n/2-1组 重复以上操作)
c代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
void move(int disk, char sourse, char temp, char target)
{
if (disk == 1)
{
printf("move %c to %c\n", sourse,target);
printf("move %c to %c\n", so