Cod sursa(job #1217360)

Utilizator TibixbAndrei Tiberiu Tibixb Data 7 august 2014 09:30:31
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<fstream>
using namespace std;
int i, j, x[23], f[23], nrsol, n, d, ii, jj, fs[50], fp[60];
FILE*fin=fopen("damesah.in","r");
ofstream fout("damesah.out");

int di[2] = { 1,1};
int dj[2] = {-1,1};

int a[30][30];

inline int modul(int x){
    return (x<0    ?   -x   :    x);
}
int cont(int k){
    for(int i=1; i<k; i++)
        if(modul(i-k)==modul(x[i]-x[k]))
            return 0;
        return 1;
}

int rec(int k){
    if(k==n+1){
        nrsol++;
        if(nrsol==1){
            for(j=1; j<=n; j++)
                fout<<x[j]<<" ";
            fout<<"\n";
        }

    }
    for(int i=1; i<=n; i++){
        if (f[i] == 0 && fs[i+k]==0 && fp[n+i-k]) {
            x[k]=i;
            f[i] = 1;
            fs[i+k]++;
            fp[n+i-k]++;

            rec(k+1);

            f[i] = 0;
            fs[i+k] ++;
            fp[n+i-k] --;

        }
    }
}

int main(){
    fscanf(fin,"%d", &n);
    rec(1);
    fout<<nrsol;
return 0;
}