1
我目前正在創建一個程序,顯示解決河內拼圖的一舉一動。 (A,A,A),我需要顯示每張光盤從開始位置開始的每次移動的位置。 A =第一個掛鉤,B =第二個掛鉤,C =第三個掛鉤。我有程序輸出的動作,但不是位置。我如何在程序中實施職位?這裏是我的代碼到目前爲止我的輸出和一個圖表顯示每次移動後的位置。盤數是一個const 3使用遞歸求解河內拼圖
#include <iostream>
using namespace std;
void moveDiscs(int num,int fromPeg,int toPeg, int tempPeg){;
char position;
if(num > 0){
moveDiscs(num-1,fromPeg,tempPeg,toPeg);
cout << "Move a disc from peg "<<fromPeg<<" to peg "<<toPeg<<endl;
moveDiscs(num-1,tempPeg,toPeg,fromPeg);
}
}
int main() {
const int from_peg = 1;
const int to_peg = 3;
const int temp_peg = 2;
moveDiscs(3,from_peg,to_peg,temp_peg);
return 0;
}
我懷疑這可以做到沒有重要的代碼添加。遞歸解決方案是,在解決方案的每個級別,該功能都認爲自己正在解決一個完整的問題。因此,遞歸調用表示的子問題不能意識到整體問題,也無法按照所描述的方式跟蹤光盤。 – shians
請看看我的解決方案 –