algorithm - 导出 nqueens 问题的时间复杂度
问题描述
谁能证明/推导出我的 nqueens 解决方案方法的时间复杂度?
我正在遍历网格上的每一个位置,如果可以在那里放置一个女王,那么,我正在计算解决方案,首先放置女王然后取消放置女王,否则我继续前进。
代码:
bool notinrow(int row,int col,vector<string> tra)
{
for(int i=0;i<tra.size();i++)
{
if(tra[row][i]=='Q' & i!=col)
return false;
}
return true;
}
bool notincol(int row,int col,vector<string> tra)
{
for(int j=0;j<tra.size();j++)
{
if(tra[j][col]=='Q' & j!=row)
return false;
}
return true;
}
bool notindiag1(int r,int c, vector<string> tra)
{
int i=r-1;
int j=c-1;
while(i>=0 & j>=0)
{
if(tra[i][j]=='Q')
return false;
i--;j--;
}
return true;
}
bool notindiag2(int r, int c,vector<string> tra)
{ int i=r-1;
int j=c+1;
while(i>=0 & j<totqueens)
{
if(tra[i][j]=='Q')
return false;
i--;j++;
}
return true;
}
void nqueens(int number,vector<string> tra,int currqueens)
{
if(currqueens==totqueens)
{
bhej.push_back(tra);
return ;
}
if(number==totiter)
return;
int x=number/totqueens;
int y=number%totqueens;
if(ispossible(x,y,tra))
{
tra[x][y]='Q';
nqueens(number+1,tra,currqueens+1);
tra[x][y]='.';
nqueens(number+1,tra,currqueens) ;
}
else
nqueens(number+1,tra,currqueens);
}```
解决方案
推荐阅读
- hangouts-chat - 传入的 webhook 消息从移动应用程序中的“未知用户”出现,在 web 界面中正确的 webhook 名称
- xml - JAXB - 忽略中间元素
- ios - 通用链接 AASA 不触发
- jquery - 当用户改变主意时对象属性不会更新
- websocket - 服务器连接到另一个 IP
- bash - 将文件(在 .txt 文件中列出)移动到 Bash 中的另一个文件夹
- ios - `carthage bootstrap` 命令导致 Github Actions 工作流程中出现 `API rate limit exceeded` 错误
- vba - 从 Outlook 中以弹出窗口的形式打开 Web 浏览器
- amazon-web-services - AWS CloudFormation 错误:!Join 对象需要两个参数,(1) 字符串分隔符和 (2) 要连接的字符串列表
- javascript - 使用 Promise 将数组变量传递给下一个函数的问题