赞
踩
--- 骑士周游问题 --- 在国际象棋棋盘上,一个"骑士"按照"马走日"的规则 从一个格子出发,走遍所有棋盘格恰好一次,即为一次周游 思路 (深度优先 - Depth First Search (DFS)): 1. 将合法走棋次序表示为一个图 1)将棋盘格作为顶点 2)按照"马走日"规则的走棋步骤作为边 3)建立每个棋盘格的所有合法走棋步骤,能够到达的棋盘格关系图 2. 采用图搜索算法,搜寻一个长度为 (行*列-1) 的路径,路径上包含每个顶点恰好一次 3. 如果沿单支深入搜索到无法继续时,路径长度还没达到预定值 就清除颜色标记,返回上一层,换一个分支继续深入搜索 4. 使用栈记录路径,并实施返回上一层的回溯操作
from 2.14_vertex&graph import Graph
- def legal_moves(x, y, bd_size):
- """
- :param x: x 坐标
- :param y: y 坐标
- :param bd_size: 格子数
- :return: 当前格子下一步的所有合法走棋位置
- """
-
- new_moves = []
- # "马走日"的 8 个格子
- direction = [(-1, -2), (-1, 2), (-2, -1), (-2, 1),
- (1, -2), (1, 2), (2, -
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。