算法学习-汉诺塔(hanoi)

题目

有三根相邻的柱子,标号为ABC,A柱子上按从小到大叠放着n个不同大小的盘子,要求把所有盘子每次移动一个,最终放到C柱子上;移动过程可以借助B柱子,但要求每次移动中必须保持小盘子在大盘子的上面。比如n=10,请给出最少次数的移动方案。


#include "stdafx.h"
#include 

void MoveOne(char from, char to)
{
	std::cout<"<

算法学习-汉诺塔(hanoi)_第1张图片

汉诺塔的状态

给定从小到大的N个盘子,它们散乱的位于A、B、C柱上,问这一状态是否是将这N个盘子从A借助B移动到C的必经状态?如果是,返回时第几个状态,如果不是,返回-1。

初始状态记为0。

根据从小到大这N个盘子位于哪个柱子上,形成一个只能取A,B,C三种可能的字符串:如“ABCCABCA"

算法学习-汉诺塔(hanoi)_第2张图片


算法学习-汉诺塔(hanoi)_第3张图片


你可能感兴趣的:(算法学习)