Cod sursa(job #2524063)

Utilizator gabbie02Thomits Gabriel gabbie02 Data 15 ianuarie 2020 00:57:11
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>

using namespace std;

ofstream fout("damesah.out");
unsigned short int sol[13];

unsigned short int abs(short int x)
{
    if(x < 0){
        return -x;
    }
    return x;
}

bool valid(unsigned short int k)
{
    for(unsigned short int i = 0; i < k; i++){
        if(sol[i] == sol[k] || k - i == abs(sol[k] - sol[i])){
            return false;
        }
    }
    return true;
}

void backtr(unsigned short int n, unsigned short int &ct, unsigned short int k = 0)
{
    for(unsigned short int i = 1; i <= n; i++){
        sol[k] = i;
        if(valid(k)){
            if(k == n - 1){
                if(ct == 0){
                    for(unsigned short int j = 0; j < n; j++){
                        fout << sol[j] << " ";
                    }
                    fout << '\n';
                }
                ct++;
            } else {
                backtr(n, ct, k + 1);
            }
        }
    }
}

int main()
{
    ifstream fin("damesah.in");
    unsigned short int n, ct = 0;
    fin >> n;
    backtr(n, ct);
    fout << ct;
    return 0;
}