#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塔问题。要求盘数通过键盘输入控制,打印移动各盘的顺序。
*/
转载请注明原文地址: https://ibbs.8miu.com/read-32200.html