Cod sursa(job #2065941)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 14 noiembrie 2017 15:31:46
Problema Problema Damelor Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.97 kb
#include <stdio.h>
#define DIM 30


int N, C[DIM], DP[2 * DIM], DS[2 * DIM], cnt, L[DIM];

FILE *fi, *fo;

void print_table(){
    int i;

    for(i = 1; i <= N ; i++)
        fprintf(fo, "%d ", L[i]);

    fprintf(fo, "\n");

}

void back(int step){

    if(step==N+1){
        if(cnt==0)
            print_table();
        cnt++;
    }

    int i;

    for( i = 1 ; i <= N ; i++)
        if(!C[i] && !DP[step - i + DIM] && !DS[step + i]){
            C[i] = 1;
            DP[step - i + DIM] = 1;
            DS[step + i] = 1;
            L[step] = i;
            back(step+1);
            C[i] = 0;
            DP[step - i + DIM] = 0;
            DS[step + i] = 0;
        }
}


int main(){

    fi = fopen("damesah.in", "r+");
    fo = fopen("damesah.out", "w+");

    fscanf(fi , "%d" , &N);

    back(1);

    fprintf(fo, "%d\n", cnt);

    fprintf(fo, "\n");

    fclose(fi);
    fclose(fo);

    return 0;

    return 0;

}