Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在NxM棋盘上放置皇后_Algorithm - Fatal编程技术网

Algorithm 在NxM棋盘上放置皇后

Algorithm 在NxM棋盘上放置皇后,algorithm,Algorithm,为了练习,我已经开始解决面试中遇到的问题。 我在船上碰到了皇后区的问题 船上皇后区(50分) 你有一个N*M的棋盘,上面有一些方块被挡住了。有多少种方法可以让一个或多个皇后出现在棋盘上,这样就不会有两个皇后互相攻击?两个皇后互相攻击,如果一个皇后可以通过水平、垂直或对角移动到达另一个皇后,而不经过任何阻挡的正方形。在一个正方形上最多可以放置一个皇后。皇后不能被放置在被阻挡的正方形上 输入: 第一行包含测试用例的数量。每个测试用例在第一行包含整数N和M。以下N行包含M个字符,每个字符代表电路板。“

为了练习,我已经开始解决面试中遇到的问题。 我在船上碰到了皇后区的问题

船上皇后区(50分)

你有一个N*M的棋盘,上面有一些方块被挡住了。有多少种方法可以让一个或多个皇后出现在棋盘上,这样就不会有两个皇后互相攻击?两个皇后互相攻击,如果一个皇后可以通过水平、垂直或对角移动到达另一个皇后,而不经过任何阻挡的正方形。在一个正方形上最多可以放置一个皇后。皇后不能被放置在被阻挡的正方形上

输入: 第一行包含测试用例的数量。每个测试用例在第一行包含整数N和M。以下N行包含M个字符,每个字符代表电路板。“#”表示阻塞的正方形,“.”表示未阻塞的正方形

输出: 输出包含每个测试用例所需答案的T行。因为答案可能非常大,所以以100000007的模输出它们

我想知道解决这个问题的最佳算法是什么?


谢谢。

。如果要查找所有排列,请使用
nQueenProblem
方法,而不是使用简单的
addQueen(0,queens,n),只需使用for循环使用不同的值进行迭代。而不是返回正确的电路板,只需数一数电路板。

可能重复的,这是一种蛮力方法,需要花费大量时间。我正在寻找一个更快的算法。谢谢。@ManasPaldhe根据wikipedia(),
目前还没有已知的精确解数公式。
也许其他人有比我能为您找到的更快的替代方案。在这个特定的问题中有一些限制,有一些“阻塞”平方,所以我们不需要放置n个皇后,我认为一些动态规划解决方案应该有效