ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【数据结构和算法】_10_剪枝

2020-03-05 22:03:21  阅读:284  来源: 互联网

标签:剪枝 10 na pie param cols DFS 皇后 数据结构


【一】 Interview(面试题)

 

【1.1】 LeetCode 51 52:N Queens(N皇后问题)

题目说明:西洋象棋,如何将 n 个皇后放置在 n x n 的棋盘上,并且使得皇后之间不能相互攻击

  • DFS(深度优先搜索)
result = []

# 深度优先遍历
def DFS(cols, na, pie, n):
    '''
    :param cols: 列表,存储皇后所在的列的索引
    :param na: 列表,存储皇后辐射的反斜区域
    :param pie: 列表,存储皇后辐射的正斜区域
    :param n: 数字,表示有几个皇后
    '''
    p = len(cols)
    if p == n:
        result.append(cols)
        return None
    for q in range(n):
        if q not in cols and p-q not in na and p+q not in pie:
            DFS(cols+[q], na+[p-q], pie+[p+q], n)

# 调用函数并返回结果
def solveNQueen(n):
    DFS([], [], [], n)
    return [ ['.'*i + 'Q' + '.'*(n-i-1) for i in sol] for sol in result ]

print(solveNQueen(4))

标签:剪枝,10,na,pie,param,cols,DFS,皇后,数据结构
来源: https://blog.csdn.net/qq_34330456/article/details/104681704

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有