2.17_knight_tour_骑士周游问题 (深度优先 DFS)

本文探讨了骑士周游问题的解决方案,利用Python实现深度优先搜索(DFS)策略来寻找棋盘上骑士的可行路径。通过图论和数据结构的知识,详细解析了算法的实现过程。
摘要由CSDN通过智能技术生成
--- 骑士周游问题 ---
    在国际象棋棋盘上,一个"骑士"按照"马走日"的规则
    从一个格子出发,走遍所有棋盘格恰好一次,即为一次周游

    思路 (深度优先 - 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, -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值