#include "stdafx.h"
#include <cstdio>
int Disk[3][64];
int point[3]={-1,-1,-1};
int n;
void han(int,int,int,int);
void move(int,int);
int main()
{
scanf_s("%d",&n);
for(int i=0;i<n;i++)
{
Disk[0][++point[0]]=n-i;
}
han(n,0,1,2);
return 0;
}
void han(int n,int a,int b, int c)
{
if(n==1) move(a,c);
else
{
han(n-1,a,c,b);
move(a,c);
han(n-1,b,a,c);
}
}
void move(int a,int b)
{
Disk[b][++point[b]]=Disk[a][point[a]--];
printf("Num.%d rok's Num.%d Disk -> Num.%d rok\n",a+1,Disk[b][point[b]],b+1);
}
带盘子序号的汉诺塔(递归方法)
最新推荐文章于 2023-08-06 21:26:28 发布