Cod sursa(job #1734127)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 26 iulie 2016 16:07:12
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>

using namespace std;
int n,x[15],sol,ok3;
ifstream fin ("damesah.in");
ofstream fout ("damesah.out");
int cont (int pas){

    for (int i=1;i<pas;i++){
        if (x[pas] == x[i])
            return 0;
    }
    int ok = x[pas]+1;
    int ok2 = x[pas]-1;
    for (int i=pas-1;i>=1;i--){
        if (x[i] == ok && ok <= n)
            return 0;

        ok++;

        if (x[i] == ok2 && ok2 != 0)
            return 0;
        ok2--;
    }

    return 1;
}

void back(int pas) {

    if (pas > n) {
        if (ok3 == 0){
            for (int i=1;i<=n;i++)
                fout<<x[i]<<" ";
            fout<<"\n";
        }
        sol++;
        ok3++;
        return;
    }
    // forul parcurge toate elementele posibile la o anumita
    // pozitie pas din solutie
    for (int i=1;i<=n;i++) {
        x[pas] = i;
        if ( cont(pas) == 1 ) {
            // daca elementul incercat pe pozita pas poate duce la solutie alaturi de
            // cel eincercate deja pe pozitiile 1..pas-1
            back(pas+1);
        }
    }

}

int main (){

    fin>>n;
    back (1);
    fout<<sol;



    return 0;
}