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
请看看我的解决方案 –