#include<bits/stdc++.h>
using namespace std;
int a[114514], b[114514], c[114514], d[114514];
int n;
int cnt;
void dfs(int i) {
if (i > n) {
怎么输出三个解???
return;
}
for (int j = 1; j <= n; j++) {
if (!b[j] && !c[i + j] && !d[abs(i - j)]) {
b[j] = 1;
c[i + j] = 1;
d[abs(i - j)] = 1;
a[i] = j;
dfs(i+1);
b[j] = 0;
c[i + j] = 0;
d[abs(i - j)] = 0;
}
}
}
int main() {
cin >> n;
dfs(1);
return 0;
}
服了,不会输出,dfs应该差不多没错吧