Cod sursa(job #1373930)

Utilizator DanielRusuDaniel Rusu DanielRusu Data 4 martie 2015 21:29:18
Problema Problema Damelor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <cmath>

using namespace std;

ifstream fin("damesah.in");
ofstream fout("damesah.out");

int N, sol[15], freq[15], k, rez;

int modul(int x) {
    return max(x, -x);
}

void afis() {
    for(int i = 1; i <= N; ++i) {
        fout << sol[i] << ' ';
    }
}

void bkt(int pos) {
    if(pos == N + 1) {
        for(int i = 1; i < N; ++i) {
            for(int j = i + 1; j <= N; ++j) {
                if(modul(sol[i] - sol[j]) == j - i) {
                    return ;
                }
            }
        }

        if(k == 0) afis();
        k = 1;
        rez++;
    }
    else {
        for(int i = 1; i <= N; ++i) {
            if(freq[i] == 0) {
                freq[i] = 1;
                sol[pos] = i;
                bkt(pos + 1);
                freq[i] = sol[pos] = 0;
            }
        }
    }
}

int main() {
    fin >> N;

    bkt(1);

    fout << '\n' << rez << '\n';

    fin.close();
    fout.close();

    return 0;
}