Cod sursa(job #3244428)

Utilizator andrei.nNemtisor Andrei andrei.n Data 24 septembrie 2024 19:41:01
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;

int v[15],n,cnt=0;
int frcol[15],frdiag1[30],frdiag2[30];
ofstream *file;

void backtraking(int x)
{
    if(x == n+1)
    {
        ++cnt;
        if(cnt == 1) for(int i=1; i<=n; ++i) *file<<v[i]<<' ';
    }
    else
    {
        for(int i=1; i<=n; ++i)
        {
            if(frcol[i]) continue;
            if(frdiag1[i+x-1]) continue;
            if(frdiag2[i-x+n]) continue;
            frcol[i] = frdiag1[i+x-1] = frdiag2[i-x+n] = 1;
            v[x] = i;
            backtraking(x+1);
            frcol[i] = frdiag1[i+x-1] = frdiag2[i-x+n] = 0;
        }
    }
}

int main()
{
    ifstream fin ("damesah.in");
    ofstream fout ("damesah.out");
    ios::sync_with_stdio(false); fin.tie(0); fout.tie(0);
    fin>>n;
    file = &fout;
    backtraking(1);
    fout<<'\n'<<cnt;
    return 0;
}