2n皇后是 n皇后的拓展,实际上都差不多,只是在放皇后的时候,同时再多放一个不同的皇后。
以下是不同点,完整代码就不搞了,原理和n皇后一样
n皇后传送门
void dfs(int x, int deep)
{
if (deep == n) {
t++;
return;
}
for (int i = 0; i < n; i++)
if (!v1[i]&&mp[x][i]==0)
if (fun(x, i, 2)) {
mp[x][i] = 2;
v1[i] = 1;
for(int j=0;j<n;j++)
if (!v2[j] && mp[x][j] == 0)
if (fun(x, j, 3)) {
mp[x][j] = 3;
v2[j] = 1;
dfs(x + 1, deep + 1);
mp[x][j] = 0;
v2[j] = 0;
}
mp[x][i] = 0;
v1[i] = 0;
}
}