Cod sursa(job #2194173)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 12 aprilie 2018 15:30:17
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.45 kb
#include <iostream>
#include <fstream>
#define DMAX 14

using namespace std;

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

int n;
int c[DMAX], nrSol;
bool afisat;

void citire(){
    in >> n;
    in.close();
}

void afisareSol(){
    for(int i = 1; i<= n; i++){
        out << c[i] <<' ';
    }
    out << '\n';
}

void prima_Solutie(int k){
    for(int col = 1; col <= n && afisat == false; col++) {
        bool ok = true;
        for(int regina = 1; regina < k; regina++){
            if(c[regina] == col || abs(c[regina] - col) == abs(regina - k)){
                ok = false;
                break;
            }
        }
        if(ok == true){
            c[k] = col;
            if(k == n){
                afisareSol();
                afisat = true;
            }else if(k < n){
                prima_Solutie(k+1);
            }
        }
    }
}

void pune_regina(int k){
    if(k == n+1){
        nrSol++;
    }else{
        for(int col = 1; col <= n; col++){
            bool ok = true;
            for(int regina = 1; regina < k; regina++){
                if(c[regina] == col || abs(c[regina] - col) == abs(regina - k)){
                    ok = false;
                    break;
                }
            }
            if(ok == true){
                c[k] = col;
                pune_regina(k+1);
            }
        }
    }
}

int main() {
    citire();
    prima_Solutie(1);
    pune_regina(1);
    out << nrSol;
    out.close();
    return 0;
}