对于练习,我已经开始解决面试问题。 我在这个问题上凸显了这个女王。
皇后队(50分)
你有一个N * M棋盘,其上有一些方块被挡住了。你有多少种方法可以在棋盘上放置一个或多个皇后,这样两个皇后就不会互相攻击?如果一个人可以通过水平,垂直或对角线移动而不经过任何被阻挡的方格而到达另一个,则两个女王互相攻击。最多可以将一个女王放在一个正方形上。女王不能被放置在被阻挡的广场上。
输入: 第一行包含测试用例的数量T.T测试用例如下。每个测试用例在第一行包含整数N和M.以下N行包含M个字符,每个字符代表电路板。 '#'表示被阻挡的方块和'。'代表一个畅通无阻的广场。
输出: 输出T行,包含每个测试用例的必需答案。由于答案可能非常大,因此输出模数为1000000007。
https://www.interviewstreet.com/challenges/dashboard/#problem/4e904d63c5069
我想知道解决此问题的最佳算法是什么?
谢谢。
答案 0 :(得分:0)
This page provides an easy to follow implementation of the N-Queens problem。如果要查找所有排列,请使用nQueenProblem
方法,而不是使用简单addQueen(0, queens, n);
,只需使用for循环迭代不同的值。而不是返回正确的电路板,只需计算电路板。