Cod sursa(job #1106020)

Utilizator mvcl3Marian Iacob mvcl3 Data 12 februarie 2014 12:45:19
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

#define in "damesah.in"
#define out "damesah.out"
#define MAX_SIZE 50

std :: ifstream f(in);
std :: ofstream g(out);

int N;
int Count, Sol[MAX_SIZE];
bool Col[MAX_SIZE], Diag_Prin[MAX_SIZE], Diag_Sec[MAX_SIZE];

void Back(int linia) {
    if(linia == N + 1) {
            if(Count < 1)   {
                for(int i = 1; i <= N; ++i) g << Sol[i] << ' ';
                g << '\n';
            }
        ++Count;
    }
    else {
        for(int c = 1; c <= N; ++c) {
            if(!Col[c] && !Diag_Prin[linia - c + N] && !Diag_Sec[linia + c]){
                Sol[linia] = c;
                Col[c] = Diag_Prin[linia - c + N] = Diag_Sec[linia + c] = 1;

                Back(linia + 1);

                Col[c] = Diag_Prin[linia - c + N] = Diag_Sec[linia + c] = 0;
            }
        }
    }
}

int main() {
    f >> N;

    Back(1);
    g << Count << '\n';

    g.close();
    return 0;
}