Cod sursa(job #1297203)

Utilizator lavi07Cioloca Lavinia lavi07 Data 21 decembrie 2014 19:21:41
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>

using namespace std;

int N;
int Solutions, First[20];

int Modul(int v) {
    if (v < 0)
        return -v;
    return v;
}

void Back(int i, int queens[]) {
    if (i == N + 1) {
        if (First[1] == 0) {
            for (int j = 1; j <= N; j++)
                First[j] = queens[j];
        }
        Solutions++;
        return;
    }
    for (int c = 1; c <= N; c++) {
        bool valid = true;
        for (int j = 1; j < i; j++) {
            if (queens[j] == c)
                valid = false;
            if (Modul(i - j) == Modul(c - queens[j]))
                valid = false;
        }
        if (valid) {
            queens[i] = c;
            Back(i + 1, queens);
        }
    }
}

int main()
{
    freopen("damesah.in", "r", stdin);
    freopen("damesah.out", "w", stdout);
    scanf("%d", &N);
    int queens[20];
    Back(1, queens);
    for (int i = 1; i <= N; i++)
        printf("%d ", First[i]);
    printf("\n%d\n", Solutions);
    return 0;
}