Data_Structure/資料結構光碟檔/CH05/hanoiTower.c.txt

62 lines
1.4 KiB
Plaintext
Raw Permalink Normal View History

2025-01-20 21:25:33 +08:00
/*
Name: hanoiTower.c
Description: <20>Q<EFBFBD>Ψ<EFBFBD><CEA8>ƻ<EFBFBD><C6BB>j<EFBFBD>k<EFBFBD>D<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD><44><EFBFBD><EFBFBD>
Rules:
<20>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD>ت<EFBFBD><D8AA>D<EFBFBD>b<EFBFBD>T<EFBFBD>ڬW<DAAC>l<EFBFBD><6C>,<2C>Nn<4E>ӽL<D3BD>l<EFBFBD>q
A <20>W<EFBFBD>l<EFBFBD>h<EFBFBD><68> C <20>W<EFBFBD><57>, <20>C<EFBFBD><43><EFBFBD>u<EFBFBD><75><EFBFBD>ʤ@<40>L<EFBFBD>l, <20>ӥB<D3A5><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u
<20>C<EFBFBD>ӽL<D3BD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>l<EFBFBD>٭n<D9AD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>h<EFBFBD>C
Ans:
<20>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD><44><EFBFBD>Q<EFBFBD>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><77><EFBFBD>̩<EFBFBD><CCA9>ݪ<EFBFBD><DDAA>L<EFBFBD>l<EFBFBD>C
<20>ڭ̥<DAAD><CCA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> A <20>W<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD> n-1 <20>ӽL<D3BD>l<EFBFBD>Q<EFBFBD><51><EFBFBD>k(<28>ɧU C <20>W)<29><><EFBFBD><EFBFBD> B <20>W<EFBFBD>l
<20>M<EFBFBD><4D><EFBFBD>~<7E><><EFBFBD>N<EFBFBD>Q<EFBFBD>̩<EFBFBD><CCA9>ݪ<EFBFBD><DDAA>L<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD> C <20>W<EFBFBD>C
<20><><EFBFBD><EFBFBD> C <20><><EFBFBD>̤j<CCA4><6A><EFBFBD>L<EFBFBD>l, B<>`<60>@ n-1 <20>ӽL<D3BD>l, A <20>W<EFBFBD>h<EFBFBD>L<EFBFBD>C
<20>u<EFBFBD>n<EFBFBD>A<EFBFBD>ɧU A <20>W<EFBFBD>l<EFBFBD>A<EFBFBD>N B <20>W n-1 <20>ӽL<D3BD>l<EFBFBD><6C><EFBFBD><EFBFBD> C <20>W<EFBFBD>Y<EFBFBD>i :
HanoiTower(n-1, A, C, B);
<20>N A <20><><EFBFBD><EFBFBD> n-1 <20>ӽL<D3BD>l<EFBFBD>ɧU C <20><><EFBFBD><EFBFBD> B
HanoiTower(n-1, B, A, C);
<20>N B <20>W<EFBFBD><57> n-1 <20>ӽL<D3BD>l<EFBFBD>ɧU A <20><><EFBFBD><EFBFBD> C
*/
#include <stdio.h>
#include <stdlib.h>
/* <20><><EFBFBD>ƭ쫬<C6AD>ŧi */
void HanoiTower(int, char, char, char);
int main()
{
int n;
char A = 'A', B = 'B', C = 'C';
printf("-----Hanoi Tower Implementaion----\n");
/*<2A><><EFBFBD>J<EFBFBD>@<40><><EFBFBD>X<EFBFBD>ӽL<D3BD>l<EFBFBD>bA<62>W<EFBFBD>l<EFBFBD><6C>*/
printf("How many disks in A ? ");
scanf("%d", &n);
if (n == 0)
printf("no disk to move\n");
else
HanoiTower(n, A, B, C);
return 0;
}
/* <20><><EFBFBD>j<EFBFBD><6A><EFBFBD>ƩI<C6A9>s<EFBFBD>D<EFBFBD>e<EFBFBD><65><EFBFBD>𤧸<EFBFBD> */
void HanoiTower(int n,char a,char b,char c)
{
if ( n == 1 )
printf("Move disk 1 from %c -> %c\n", a, c);
else {
/* <20>NA<4E>Wn-1<>ӽL<D3BD>l<EFBFBD>ɧUC<55><43><EFBFBD><EFBFBD>B */
HanoiTower(n-1,a,c,b);
printf("Move disk %d from %c -> %c\n", n, a, c);
/* <20>NB<4E>Wn-1<>ӽL<D3BD>l<EFBFBD>ɧUA<55><41><EFBFBD><EFBFBD>C */
HanoiTower(n-1, b, a, c);
}
}