[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;
}
|