三色塔汉诺塔 三色

#include <stdio.h>
void move(int n, char a, char b,char c)
{
 if(n==1)
 {
  printf("%c->%c\n",a,c);
  printf("%c->%c\n",a,c);
  printf("%c->%c\n",a,c);
 }
 else
 {
  move(n-1,a,c,b);
  move(1,a,b,c);
  move(n-1,b,a,c);
 }
}
void colorMove(int n)
{
 char a = 'A';
 char b = 'B';
 char c = 'C';

 int i = n/3;
 for(; i>1; i--)
 {
  move(i-1,a,c,b);
  printf("%c->%c\n",a,c);
  printf("%c->%c\n",a,c);
  move(i-1,b,c,a);
  printf("%c->%c\n",c,b);

 }
 printf("%c->%c\n",a,b);
 printf("%c->%c\n",a,c);
}
void main(void)
{
 int n;
 while(1)
 {
  scanf("%d",&n);
  if(n%3!=0)
  {
   printf("InValid Num,Enter Again\n");
   
  }
  else
   break;
 }
 colorMove(n);

}

原文地址:https://www.cnblogs.com/lobsterIT/p/2707682.html