#include<stdio.h>
int step=0; //全局变量step用于统计步数
int main()
{
int left[5]={1,2,3,4,5};
int mid[5]={0},right[5]={0}; //用三个数组模拟三个柱子,5个数字表示由大到小的5个盘子
int steps;
int hanoi_com(int n,int a[5],int b[5],int c[5]);
steps=hanoi_com(5,left,mid,right,0);
printf("left=[%d,%d,%d,%d,%d]\n",left[0],left[1],left[2],left[3],left[4]);
printf("mid=[%d,%d,%d,%d,%d]\n",mid[0],mid[1],mid[2],mid[3],mid[4]);
printf("right=[%d,%d,%d,%d,%d]\n",right[0],right[1],right[2],right[3],right[4]); //打印最终状态
printf("steps=%d\n",steps); //打印结果
return 0;
}
int hanoi_com(int n,int a[5],int b[5],int c[5])
{
int i,aofe_a,aofe_c;
if(n==1)
{
i=0;
while(i<=4)
{
if(a[i]!=0) break;
else i++;
}
aofe_a=i; //统计柱子a的空位数
i=0;
while(i<=4)
{
if(c[i]!=0) break;
else i++;
}
aofe_c=i;
数组模拟汉诺塔问题
最新推荐文章于 2022-08-19 17:59:46 发布