n*w
2 楼
下面是N-Queen的一个native解法。该怎么推导下面算法时间复杂度O(N!*N)的*N?N!容
易看出来。这个 *N 应该是和这行if (!Valid(s, row, i)) continue;有关?
static void DFS(int[] s, int row, List
易看出来。这个 *N 应该是和这行if (!Valid(s, row, i)) continue;有关?
static void DFS(int[] s, int row, List
- > allSolutions)
{
var N = s.Length;
if (row == N)
{
var solution = s.Select(x => { var a = new bool[N]; a[x] =
true; return a; }).ToList();
allSolutions.Add(solution);
PrintSolution(solution);
return;
};
for (var i = 0; i < N; i++)
{
if (!Valid(s, row, i)) continue;
s[row] = i;
// Console.WriteLine(s.Aggregate($"{row}-", (a, n)=> $"{a} {
(n==-1?".":n.ToString())}"));
DFS(s, row + 1, allSolutions);
}
}
static private bool Valid(int[] s, int row, int col)
{
for (var i = 0; i < row; i++)
{
if (s[i] == col) return false;
if (Math.Abs(row - i) == Math.Abs(col - s[i])) return false;
}
return true;
}
static List
- > Solve(int n)
{
var allSolutions = new List
- >();
var s = new int[n];
Array.Fill(s, -1);
DFS(s, 0, allSolutions);
return allSolutions;
}
b*8
3 楼
no
d*a
4 楼
对。Valid过程的执行代价是O(N)。DFS一共被调用了N!次,每次除递归调用之外的执行
代价是O(N),所以总的代价是O(N!*N)。
【在 n*w 的大作中提到】
: 下面是N-Queen的一个native解法。该怎么推导下面算法时间复杂度O(N!*N)的*N?N!容
: 易看出来。这个 *N 应该是和这行if (!Valid(s, row, i)) continue;有关?
: static void DFS(int[] s, int row, List
代价是O(N),所以总的代价是O(N!*N)。
【在 n*w 的大作中提到】
: 下面是N-Queen的一个native解法。该怎么推导下面算法时间复杂度O(N!*N)的*N?N!容
: 易看出来。这个 *N 应该是和这行if (!Valid(s, row, i)) continue;有关?
: static void DFS(int[] s, int row, List
- > allSolutions)
: {
: var N = s.Length;
: if (row == N)
: {
: var solution = s.Select(x => { var a = new bool[N]; a[x] =
: true; return a; }).ToList();
: allSolutions.Add(solution);
相关阅读
public and protected member in private inherit如何将若干已升序排序好的数组合并在一起,并仍然是升序?这儿专家多,问个杂志问题问个先后的问题问一下Python的情况bst的dsw算法的问题c++ template中如何判断类型准备面试一个java-based position,有什么书推荐一下?How is map implemented in STL?how to output the address pointed by a pointer急问:Oracle JDBC 问题What is this?问几个缩写的念法急! Python 如何从文件读取数据(整数) ~~在线等Python的问题请推荐servlet还有jsp的书请问这道题怎么解决?open an image fileC++ 和数据库结合的课, 哪个教材比较好啊?问一个Visual Studio 2003 到 2005的问题