Algorithm 在NxM棋盘上放置皇后
为了练习,我已经开始解决面试中遇到的问题。 我在船上碰到了皇后区的问题 船上皇后区(50分) 你有一个N*M的棋盘,上面有一些方块被挡住了。有多少种方法可以让一个或多个皇后出现在棋盘上,这样就不会有两个皇后互相攻击?两个皇后互相攻击,如果一个皇后可以通过水平、垂直或对角移动到达另一个皇后,而不经过任何阻挡的正方形。在一个正方形上最多可以放置一个皇后。皇后不能被放置在被阻挡的正方形上 输入: 第一行包含测试用例的数量。每个测试用例在第一行包含整数N和M。以下N行包含M个字符,每个字符代表电路板。“#”表示阻塞的正方形,“.”表示未阻塞的正方形 输出: 输出包含每个测试用例所需答案的T行。因为答案可能非常大,所以以100000007的模输出它们 我想知道解决这个问题的最佳算法是什么?Algorithm 在NxM棋盘上放置皇后,algorithm,Algorithm,为了练习,我已经开始解决面试中遇到的问题。 我在船上碰到了皇后区的问题 船上皇后区(50分) 你有一个N*M的棋盘,上面有一些方块被挡住了。有多少种方法可以让一个或多个皇后出现在棋盘上,这样就不会有两个皇后互相攻击?两个皇后互相攻击,如果一个皇后可以通过水平、垂直或对角移动到达另一个皇后,而不经过任何阻挡的正方形。在一个正方形上最多可以放置一个皇后。皇后不能被放置在被阻挡的正方形上 输入: 第一行包含测试用例的数量。每个测试用例在第一行包含整数N和M。以下N行包含M个字符,每个字符代表电路板。“
谢谢。。如果要查找所有排列,请使用
nQueenProblem
方法,而不是使用简单的addQueen(0,queens,n)代码>,只需使用for循环使用不同的值进行迭代。而不是返回正确的电路板,只需数一数电路板。可能重复的,这是一种蛮力方法,需要花费大量时间。我正在寻找一个更快的算法。谢谢。@ManasPaldhe根据wikipedia(),目前还没有已知的精确解数公式。
也许其他人有比我能为您找到的更快的替代方案。在这个特定的问题中有一些限制,有一些“阻塞”平方,所以我们不需要放置n个皇后,我认为一些动态规划解决方案应该有效