Nu aveti permisiuni pentru a descarca fisierul grader_test5.in
Cod sursa(job #2773730)
| Utilizator | Data | 8 septembrie 2021 14:41:13 | |
|---|---|---|---|
| Problema | Problema Damelor | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.97 kb |
#include <bits/stdc++.h>
#define NMAX 31
using namespace std;
ifstream fin("cmlsc.in");
ofstream fout("cmlsc.out");
int v[NMAX], diag1[NMAX], diag2[NMAX], line[NMAX];
int n, cnt;
bool ok;
bool valid(int k) {
return !(line[v[k]] || diag1[v[k] + n - k] || diag2[v[k] + k - 1]);
}
void gen(int k) {
for(int i = 1; i <= n; i++) {
v[k] = i;
if(valid(k)) {
diag1[n + i - k] = 1;
diag2[k + i - 1] = 1;
line[i] = 1;
if(k < n)
gen(k + 1);
else {
if(!ok) {
ok = 1;
for(int j = 1; j <= n; j++)
fout << v[j] << ' ';
fout << '\n';
}
cnt++;
}
diag1[n + i - k] = 0;
diag2[i + k - 1] = 0;
line[i] = 0;
}
}
}
int main() {
fin >> n;
gen(1);
fout << cnt;
}
