C语言汉诺塔问题

2025-04-11 02:57:54
推荐回答(1个)
回答1:

#include
int n,a[3][21];
void hanoi(int m,int x,int y,int z)
{int i,j,k;
 if(m>1)hanoi(m-1,x,z,y);
 a[z][a[z][0]+1]=a[x][a[x][0]];
 a[x][0]--;
 a[z][0]++;
 for(i=0;i<3;i++)
 {for(j=n;j>0;j--)
    printf("%c",j>a[i][0]?'.':'0'+a[i][j]);
  if(i<2)printf(" ");
 }
 printf("\n");
 if(m>1)hanoi(m-1,y,x,z);
}
int main()
{int i;
 scanf("%d",&n);
 a[0][0]=n;
 for(i=1;i<=n;i++)a[0][i]=n-i;
 hanoi(n,0,1,2);
 return 0;
}