Pagini recente » Cod sursa (job #2875104) | Cod sursa (job #2944924) | Cod sursa (job #705631) | Cod sursa (job #1121435) | Cod sursa (job #1458271)
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
#include <unordered_set>
using namespace std;
constexpr int maxn = 14;
ifstream f("damesah.in");
ofstream g("damesah.out");
bool col[maxn], diag_princ[2*maxn], diag_sec[2*maxn];
int v[maxn];
int num_sol=0, i = 0, sz;
void back(){
if(i == sz){
++num_sol;
if(num_sol == 1){
for(int i = 0; i < sz; ++i){
g << (v[i]+1) << ' '; }
g << '\n'; } }
else{
for(int j = 0; j < sz; ++j){
int pdp = j - i + sz,
pds = j + i;
if((!col[j]) && (!diag_princ[pdp]) && (
!diag_sec[pds])){
col[j] = true;
diag_princ[pdp] = true;
diag_sec[pds] = true;
v[i] = j;
++i;
back();
--i;
col[j] = false;
diag_princ[pdp] = false;
diag_sec[pds] = false; } } } }
int main(){
f >> sz;
back();
g << num_sol;
return 0; }