N皇后
N皇后
dfs模板
点击查看代码
class Solution {
private int ans;
public int totalNQueens(int n) {
boolean[] col = new boolean[n];
boolean[] diag1 = new boolean[n*2 - 1];
boolean[] diag2 = new boolean[n*2 - 1];
dfs(0, col, diag1, diag2);
return ans;
}
private void dfs(int r, boolean[] col, boolean[] diag1, boolean[] diag2){
int n = col.length;
if(r == n){
ans++;
return;
}
for(int c = 0; c < n; c++){
int rc = r-c+n-1;//计算当前行r和列c对应的右斜线diag2的索引。
if(!col[c] && !diag1[r+c]&&!diag2[rc]){
col[c] = diag1[r+c] = diag2[rc] =true;
dfs(r+1,col,diag1,diag2);
col[c] = diag1[r+c] =diag2[rc]=false;
}
}
}
}
本文作者:TTDB
本文链接:https://www.cnblogs.com/ttdb-huu/p/18581262
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步