汉诺塔问题是计算机科学领域研究的一个经典问题,最简单的是3阶汉诺塔,复杂度可以扩展到4阶、5阶,乃至N阶。。。
很多数据结构教材都提到了汉诺塔问题,并给出了递归解法。最近我用启发式搜索算法解决了最简单的3阶汉诺塔问题,如果改进一下该算法求解4阶汉诺塔应该也是可以的。这里简单谈一谈思路。
Step-1: 存储结构设计
塔体结构:
struct Hanoi_Stack
{
String disc;
Hanoi_Stack *front;
Hanoi_Stack *next;
int position;
};
//*******************************
移动记录结构
struct Hanoi_List
{
String draw[3][3];
Hanoi_List *front;
Hanoi_List *next;
};
//*************************************
Step-2:制定启发式搜索策略
首先满足目标优先原则,其次满足就近原则
if(目标==Z)
//如果towerid=0,则Z,