试探回溯法
八皇后
国际象棋中皇后的势力范围服盖其所在的水平线、垂直线以及两条对角线。
在n x n 的棋盘上放置n个皇后,如何使得她们彼此互不攻击。
皇后
皇后是组成期盼和最终解得基本单元。
1 | struct Queen{ |
既然每行能且仅能放置一个皇后,故不妨首先将各皇后分配至每一行。然后,从空棋盘开始,逐个尝试着将她们放置到无冲突的某列。每放置好一个皇后,才继续试探下一个。若当前皇后在任何列都会造成冲突,则后续皇后的试探都必将是徒劳,故此时应该回溯到上一皇后。
1 | void placeQueens(int N){ |
迷宫寻径
在任意指定的起始格点与目标格点之间,找出一条通路(如果存在)
迷宫格点:
格点是迷宫的基本组成单位,首先实现Cell类
1 | typedef enum {AVAILABLE, ROUTE, BACKTRACKED, WALL } Status;//迷宫单元状态 |
邻格查询:
1 | inline Cell* neighbor ( Cell* cell ) { |
邻格转入:
1 | inline Cell* advance ( Cell* cell ) { //从当前位置转入相邻格点 |
算法实现:
1 | // 迷宫寻径算法:在格单元s至t之间规划一条通路(如果的确存在) |