以下是C++中漢諾塔問題的實現代碼:
#include <iostream>
void hanoi(int n, char source, char auxiliary, char destination) {
if (n == 1) {
std::cout << "Move disk 1 from " << source << " to " << destination << std::endl;
return;
}
hanoi(n - 1, source, destination, auxiliary);
std::cout << "Move disk " << n << " from " << source << " to " << destination << std::endl;
hanoi(n - 1, auxiliary, source, destination);
}
int main() {
int numDisks;
std::cout << "Enter the number of disks: ";
std::cin >> numDisks;
hanoi(numDisks, 'A', 'B', 'C');
return 0;
}
這個代碼示例中,hanoi
函數用于遞歸地解決漢諾塔問題。它接受四個參數:n
表示要移動的盤子數量,source
表示源柱子,auxiliary
表示輔助柱子,destination
表示目標柱子。當n
等于1時,即只有一個盤子需要移動時,直接將該盤子從源柱子移動到目標柱子。否則,先將n-1
個盤子從源柱子移動到輔助柱子上,然后將第n
個盤子從源柱子移動到目標柱子上,最后再將n-1
個盤子從輔助柱子移動到目標柱子上。
在main
函數中,用戶需要輸入要移動的盤子數量,然后調用hanoi
函數來解決問題。