Cod sursa(job #2002799)

Utilizator Alex18maiAlex Enache Alex18mai Data 20 iulie 2017 19:43:40
Problema Problema Damelor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

using namespace std;

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

int Perm[15];
bool used[15];
int d1[35];
int d2[35];

void zero(){
    for (int i=1; i<=30; i++){
        d1[i]=0;
        d2[i]=0;
    }
    return;
}

void backt(int q, int n, int &s){
    if (q == n+1){
        for (int i=1; i<=n; i++) {
            d1[i- Perm[i] + n]++;
            if (d1[i - Perm[i] + n] > 1) {
                zero();
                return;
            }
            d2[i + Perm[i]]++;
            if (d2[i + Perm[i]] > 1) {
                zero();
                return;
            }
        }
        zero();
        s++;
        if (s==1){
            for (int i=1; i<=n; i++){
                cout<<Perm[i]<<" ";
            }
            cout<<'\n';
        }
        return;
    }
    for (int i=1; i<=n; i++){
        if (used[i] != true) {
            used[i] = true;
            Perm[q] = i;
            backt(q+1, n, s);
            used[i] = false;
        }
    }
}

int main() {
    int n;
    cin>>n;
    int s=0;
    backt(1,n,s);
    cout<<s;
    return 0;
}