Hanoi塔问题(C)

    技术2022-05-11  76

    #include < stdio.h > void  move(unsigned n, char  fromd, char  tod, char  us); int  i = 0 ; int  main(){unsigned n; int  j;printf( " 请输入盘子数: " );scanf( " %d " , & n);printf( " 位置 :  a  b  c " );move(n, ' a ' , ' c ' , ' b ' ); printf( " 共计: %d " ,i);scanf( " %d " , & n); return   0 ;} void  move(unsigned n, char  fromd, char  tod, char  us){ if (n > 0 ){move(n - 1 ,fromd,us,tod); ++ i; switch (fromd){ case   ' a ' : switch (tod){ case   ' b ' :printf( " 第[%d]步: ------>- " ,i,n,n); break ; case   ' c ' :printf( " 第[%d]步: -------------->- " ,i,n,n); break ;} break ; case   ' b ' : switch (tod){ case   ' a ' :printf( " 第[%d]步: -<------ " ,i,n,n); break ; case   ' c ' :printf( " 第[%d]步: ------>- " ,i,n,n); break ;} break ; case   ' c ' : switch (tod){ case   ' a ' :printf( " 第[%d]步: -<-------------- " ,i,n,n); break ; case   ' b ' :printf( " 第[%d]步: -<------ " ,i,n,n); break ;} break ;}move(n - 1 ,us,tod,fromd);}} /* 编写一个递归程序,解决Hanoi塔问题。要求盘数通过键盘输入控制,打印移动各盘的顺序。 */  

    最新回复(0)