Cod sursa(job #1784900)

Utilizator Kln1000Ciobanu Bogdan Kln1000 Data 20 octombrie 2016 17:16:50
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <vector>
#include <cmath>

std::ifstream f ("damesah.in");
std::ofstream t ("damesah.out");

int level,n;
bool ok=true;
std::vector <int> v={0,0,0,0,2,10,4,40,92,352,724,2680,14200,73712},c(15),sol(15);


void bt(int level) {
    if (level>n and ok) {
        ok=false;
        for (int i=1; i<=n; ++i) sol[i]=c[i];
    }
    else if (ok) for (int i=c[level]+1; i<=n; ++i){
        bool aux=true;
        for (int j=1; j<level; ++j)
            if ( c[j]==i or std::abs(c[j]-i)==level-j ){
                aux=false; break;
            }
        if (aux){
            c[level]=i;
            bt(level+1);
            c[level]=0;
            }
    }
}

int main()
{
    f>>n;
    bt(1);
    for (int i=1;i<=n;++i)
        t<<sol[i]<<" ";
    t<<'\n'<<v[n];
    return 0;
}