Pagini recente » Cod sursa (job #2177248) | Cod sursa (job #2328653) | Cod sursa (job #1976552) | Cod sursa (job #1125815) | Cod sursa (job #2302450)
#include <fstream>
#include <vector>
using namespace std;
ofstream q("damesah.out");
void rec(int &y, int linie, vector<int> &diag1, vector<int> &diag2,
vector<int> &aparitii, vector<int> &v) {
if (v.size() == aparitii.size())
y++;
if (v.size() == aparitii.size() && y == 1) {
for (auto x : v) {
q << x + 1 << " ";
}
q << endl;
return;
}
for (int coloana = 0; coloana < aparitii.size(); coloana++) {
if (aparitii[coloana] == 1)
continue;
if (diag1[coloana + linie] == 1 ||
diag2[aparitii.size() - 1 - coloana + linie] == 1)
continue;
v.push_back(coloana);
aparitii[coloana] = 1;
diag1[coloana + linie] = 1;
diag2[aparitii.size() - 1 - coloana + linie] = 1;
rec(y, linie + 1, diag1, diag2, aparitii, v);
aparitii[coloana] = 0;
diag1[coloana + linie] = 0;
diag2[aparitii.size() - 1 - coloana + linie] = 0;
v.pop_back();
}
}
int main() {
ifstream f("damesah.in");
int N;
f >> N;
vector<int> diag1(2 * N - 1, 0);
vector<int> diag2(2 * N - 1, 0);
vector<int> aparitii(N, 0);
vector<int> v;
int x = 0;
rec(x, 0, diag1, diag2, aparitii, v);
q << x;
}