N-Queens 谜题,但包含所有棋子

Posted

技术标签:

【中文标题】N-Queens 谜题,但包含所有棋子【英文标题】:N-Queens puzzle, but with all chess piecies 【发布时间】:2016-12-18 15:39:23 【问题描述】:

我想解决类似于 N-Queens 的问题,但是:

所有棋子都可用 用户输入要放置多少个类型的棋子(例如 3 个车、4 个骑士、1 个主教)

我现在在地板上躺了一段时间,但想不出如何为此目的调整回溯算法。我将非常感谢任何形式的帮助。

【问题讨论】:

【参考方案1】:

原则上,应该使用与经典 N-Queen 问题相同的方法:

    找一个没有被攻击的空方格来放置下一个棋子 递归搜索新位置(或者如果你已经放置了所有的棋子,输出解) 取回最后放置的棋子并重复(转到第 1 步),直到您尝试了所有可以放置下棋子的方格

与经典 N-Queens 问题的唯一区别是不同的部分具有不同的攻击模式。一些常见的优化可能不再起作用。例如,如果你有棋子,它会破坏对称性,因为它们只会攻击它们前面的方格。 (虽然即使有棋子,你仍然有一个对称轴。)

如果您首先放置覆盖最多方格的棋子,我希望回溯算法更有效:首先是皇后,然后是车和象,然后是骑士和国王,最后是棋子。

【讨论】:

以上是关于N-Queens 谜题,但包含所有棋子的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 51. N-Queens

java中使用堆栈和回溯的n皇后谜题

Leetcode 52 N-Queens II 回溯搜索

[LeetCode] 51. N皇后

谜题——用自定义类型暴露私有成员的公共子成员

题目地址(51. N 皇后)