Cod sursa(job #1567834)

Utilizator Vali_DeaconuVali Deaconu Vali_Deaconu Data 13 ianuarie 2016 19:26:26
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<cstdio>
using namespace std;
int n, x[16], sol;
bool found = false;
int abs(int x) {
    if (x < 0)
        return -1*x;
    return x;
}
bool valid(int k) {
    for (int i=1; i<k; ++i)
        if (x[i] == x[k] || k - i == abs(x[k] - x[i]))
            return false;
    return true;
}
void back(int k) {
    for (int i=1; i<=n; ++i) {
        x[k] = i;
        if (valid(k)) {
            if (k == n) {
                if (!found) {
                    for (int j=1; j<=n; ++j)
                        printf ("%d ", x[j]);
                    printf ("\n");
                    found = true;
                }
                ++sol;
            } else {
                back (k+1);
            }
        }
    }
}
int main() {
    if (freopen("damesah.in", "r", stdin)) ;
    if (freopen("damesah.out", "w", stdout)) ;
    if (scanf("%d", &n)) ;
    back(1);
    printf ("%d", sol);
    fclose(stdin);
    fclose(stdout);
    return 0;
}