Pagini recente » Cod sursa (job #154375) | Cod sursa (job #1941248) | Cod sursa (job #2380428) | Cod sursa (job #1221546) | Cod sursa (job #2471102)
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
void generate_conf(int l, int n, vector<int> cur_conf, vector<int> &columns, vector<int> &diag_1, vector<int> &diag_2, int &count) {
if (l == n) {
if (count == 0) {
for (int i = 0; i < n; i++)
fout << cur_conf[i] + 1 << " ";
fout << "\n";
}
count++;
return;
}
for (int i = 0; i < n; i++) {
if (columns[i] == 0 && diag_1[l + i] == 0 && diag_2[l - i + n - 1] == 0) {
cur_conf[l] = i;
columns[i] = 1;
diag_1[l + i] = 1;
diag_2[l - i + n - 1] = 1;
generate_conf(l + 1, n, cur_conf, columns, diag_1, diag_2, count);
columns[i] = 0;
diag_1[l + i] = 0;
diag_2[l - i + n - 1] = 0;
}
}
return;
}
int main() {
int n; fin >> n;
vector<int> cur_conf(n), columns(n, 0), diag_1(2 * n - 1, 0), diag_2(2 * n - 1, 0);
int count = 0;
generate_conf(0, n, cur_conf, columns, diag_1, diag_2, count);
fout << count << "\n";
return 0;
}