class Solution {
public:
vector
<vector
<string
>> solveNQueens(int n
) {
vector
<vector
<string
>>res
;
vector
<string
>temp(n
, string(n
, '.'));
vector
<int>col(n
, 0);
vector
<int>dg(2 * n
, 0);
vector
<int>adg(2 * n
, 0);
dfs(0, n
, res
, temp
, col
, dg
, adg
);
return res
;
}
void dfs(int row
, int n
, vector
<vector
<string
>>&res
, vector
<string
>temp
, vector
<int>col
,
vector
<int>dg
, vector
<int>adg
) {
if (row
== n
) {
res
.push_back(temp
);
}
for (int i
= 0; i
< n
; i
++) {
if (!col
[i
] && !dg
[row
- i
+ n
] && !adg
[row
+ i
]) {
col
[i
] = dg
[row
- i
+ n
] = adg
[row
+ i
] = 1;
temp
[row
][i
] = 'Q';
dfs(row
+ 1, n
, res
, temp
, col
, dg
, adg
);
col
[i
] = dg
[row
- i
+ n
] = adg
[row
+ i
] = 0;
temp
[row
][i
] = '.';
}
}
}
};
转载请注明原文地址:https://tech.qufami.com/read-24507.html