- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
# -*- coding: utf-8 -*-
def puzzle(rows, cols):
if rows == 0:
return [[]]
else:
return new_queen(rows - 1, cols, puzzle(rows - 1, cols))
def new_queen(new_row, cols, plsd_queens):
new_solutions = []
for solution in plsd_queens:
for new_col in range(cols):
if test(new_row, new_col, solution):
new_solutions.append(solution + [new_col])
return new_solutions
def test(new_row, new_col, solution):
for row in range(new_row):
if solution[row] == new_col or solution[row] + row == new_col + new_row or\
solution[row] - row == new_col - new_row:
return False
return True
大家好!我怎样才能找到这个 N 皇后问题递归算法的唯一解?它只找到所有解决方案:在 8x8 上它将有 92 个解决方案,但唯一的只有 12 个(其他解决方案是从这 12 个中翻译和镜像的)
最佳答案
为了获得最佳结果,您应该通过动态规划设计您的算法,并且可以在以下位置找到它: google Stackoverflow
你设置了一个数组 a[n][count] 并将状态 i 保存在 a[..][i] 中。这是 n=8 的第一个项目示例:
a = {5,1,8,4,2,7,3,6}{1} , .....
注意:每个解决方案可以通过对称和旋转更改为 8 种状态。因此对于每个结果,您对称和旋转他们的解决方案以检查是否保存在您的数组中?
关于python - 求 N 皇后拼图递归算法的唯一解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15186137/
最初的 N-Queen 问题是关于在 N*N 棋盘上放置 N 个皇后。 然而,我却被一位学界 friend 质疑: 有预定义皇后的 N 皇后问题的 NP 完备性证明吗? 定义是: 假设: N = 8,
我正在尝试解决 N 皇后问题。您可以在 https://leetcode.com/problems/n-queens/ 中找到问题. 对于回溯,我了解到我们可以用三个关键来解决问题: 做出选择 约束
我正在用 Java 制作国际象棋游戏。 我做了一个 JFrame,它可以让我创建棋子,这就是为什么我对任何棋子都有所有可能的走法(并且我将制作比正常国际象棋中更多的棋子)。 但是我有一个小问题,我已经
我编写了一个 N-Queens 难题的 Java 小算法(使用 c*c 棋盘)。您将在下面找到我的递归方法的代码。 它没有找到所有的解决方案。 我的功能是什么 这个想法是在主方法中第一次调用我的函数,
我写了两个程序: 通过回溯算法在没有任何威胁的情况下将 n 个皇后放在棋盘上。但这对于 big n 来说非常沉重。最后你可以运行 100 个皇后。 在没有任何爬山算法威胁的情况下,将 n 个皇后放在棋
我是一名优秀的程序员,十分优秀!