Pagini recente » Cod sursa (job #2290489) | Cod sursa (job #1305809) | Cod sursa (job #3160746) | Cod sursa (job #72661) | Cod sursa (job #1486944)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int ok;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int find_sol(int n, vector <int> col, vector <int> diag1, vector <int> diag2, vector<int> sol) {
int k = sol.size();
if(n == k){
if(!ok){
for(int i = 0; i < sol.size(); ++i)
fout << sol[i] << " ";
fout << '\n';
ok = 1;
}
return 1;
}
int res = 0;
for(int i = 0; i < n; ++i)
if(!col[i] && !diag1[n + k - i] && !diag2[i+k]){
col[i] = 1;
diag1[n + k - i] = 1;
diag2[i+k] = 1;
sol.push_back(i+1);
res += find_sol(n, col, diag1, diag2, sol);
sol.pop_back();
col[i] = 0;
diag1[n + k - i] = 0;
diag2[i+k] = 0;
}
return res;
}
int main() {
int n;
fin >> n;
vector <int> col(n, 0), diag1(2*n, 0), diag2(2*n, 0), sol;
ok = 0;
fout << find_sol(n, col, diag1, diag2, sol);
return 0;
}