CHanoi::CHanoi(){ this->m_stepCount = 0; //设置步数为0}//************************************************************************// 函数名称: CHanoi// 访问权限: public // 创建日期: 2016/12/27// 创 建 人: // 函数说明: 汉诺塔类构造函数// 函数参数: unsigned int plate_num 定义圆盘的个数// 返 回 值: //************************************************************************CHanoi::CHanoi(unsigned int plate_num){ this->m_plateNum = plate_num; //设置圆盘的个数 this->m_stepCount = 0; //设置步数为0}CHanoi::~CHanoi(){}//************************************************************************// 函数名称: Hanoi_Move// 访问权限: public // 创建日期: 2016/12/27// 创 建 人: NPC// 函数说明: 递归汉诺塔算法// 函数参数: unsigned int plate_num 放置的盘子的数目// 函数参数: std::string from 盘子的初始放置位置// 函数参数: std::string depend 盘子移动需要借助的位置// 函数参数: std::string to 盘子移动的目标位置// 返 回 值: void//************************************************************************void CHanoi::Hanoi_Move(unsigned int plate_num, std::string from, std::string depend, std::string to){ if (1 == plate_num) { cout << "第 " << ++this->m_stepCount << " 步: " << "将盘子" << plate_num << "由 " << from << " 移动到 " << to << endl; return; } else { this->Hanoi_Move(plate_num-1, from, to, depend); cout << "第 " << ++this->m_stepCount << " 步: " << "将盘子" << plate_num << "由 " << from << " 移动到 " << to << endl; this->Hanoi_Move(plate_num-1, depend, from, to); }}class CHanoi{public: CHanoi(); CHanoi(unsigned int plate_num); ~CHanoi();PRivate: unsigned int m_plateNum; unsigned int m_stepCount;public: void Hanoi_Move(unsigned int plate_num, std::string from, std::string depend, std::string to); //递归汉诺塔算法};调用:CHanoi* p = new CHanoi(); p->Hanoi_Move(3, "A", "B", "C");3. 结果
新闻热点
疑难解答