我有些问题可能是最基本的问题,但我觉得很难理解。如何确定nQueens的时间复杂度。在一些帖子里写的是n!因为在(4*4)矩阵中,每个皇后得到一行&当皇后们向下移动列选项时,列选项减少(n * n-1 *n-2.)这很好,但在递归算法中,我们通过rowIndex,对于每个调用,我们检查皇后是否可以通过所有列放置在单元格循环中&然后调用solveNQueens表示rowIndex+1。在这种情况下,时间复杂度仍然是n!
bool solveNQueens(rowIndex, matrix)
{
//recursion base case to exit
//decision tree
for (int i = 0; i<4; i++)
{
if(cellAvailable)
{
solveNQueens(rowIndex+1, matrix);
}
}
}发布于 2022-08-17 02:05:12
实际上,O(n!)是一个上界。但作为这篇文章解释,解决方案的数量大致是(0.143n)^n。这就给出了一个超指数下界。
想出一个更好的答案很可能是一个开放的研究问题。但是我希望下界在正确的范围内,因为算法需要什么才能产生所有的答案。
https://stackoverflow.com/questions/73380500
复制相似问题