2013年9月13日 星期五

[C/C++ 演算法]- 雙色、三色河內塔

[C/C++ 演算法]- 雙色、三色河內塔



剛才找資料時發現一個C/C++的教學網站,趕快發揮(C/P)的長才將它備份來,有需要的同好,歡迎來(C/P)一下^^。


拷貝來源:
http://openhome.cc/Gossip/AlgorithmGossip/
http://openhome.cc/Gossip/AlgorithmGossip/MultiColorHanoiTower.htm









#include <stdio.h>

void
print(char from, char to) {
printf("盤由 %c 移至 %c\n", from, to);
}


void
hanoi(int n, char a, char b, char c) {
if
(n == 1) {
print(a, c);
print(a, c);
}
else {
hanoi(n - 1, a, c, b);
hanoi(1, a, b, c);
hanoi(n - 1, b, a, c);
}
}


void
hanoi2colors(int n) {
char
a = 'A';
char
b = 'B';
char
c = 'C';
int
i;
for
(i = n / 2; i > 1; i--) {
hanoi(i - 1, a, b, c);
print(a, b);
print(a, b);
hanoi(i - 1, c, b, a);
print(b, c);
}

print(a, b);
print(a, c);
}


int
main() {
int
n;
printf("盤數:");
scanf("%d", &n);

hanoi2colors(n);

return
0;
}


沒有留言:

張貼留言