Cod sursa(job #3252447)

Utilizator Coman_DianaComan Diana Coman_Diana Data 29 octombrie 2024 17:27:56
Problema Problema Damelor Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <stdio.h>
#include <stdlib.h>

#define NMAX 13

int num_n, rez;
int vec[NMAX + 1];
int f[NMAX + 1];
int fdp[2 * NMAX + 1], fds[2 * NMAX + 1];

FILE *fin, *fout;

void generare_perumatari( int poz ) {
  int ind;

  if ( poz == num_n + 1 ) {
    rez++;
    if ( rez == 1 ) {
      for ( ind = 1; ind <= num_n; ind++ )
        fprintf( fout, "%d ", vec[ind] );
      fprintf( fout, "\n" );
    }
  }

  for ( ind = 1; ind <= num_n; ind++ ) {
    if ( f[ind] + fdp[ind + poz] + fds[num_n - ind + poz] == 0 ) {
      f[ind] = fdp[ind + poz] = fds[num_n - ind + poz] = 1;
      vec[poz] = ind;
      generare_perumatari( poz + 1 );
      f[ind] = fdp[ind + poz] = fds[num_n - ind + poz] = 0;
    }
  }
}

int main()
{
    fin = fopen( "damesah.in", "r" );
    fscanf( fin, "%d", &num_n );
    fclose( fin );

    fout = fopen( "damesah.out", "w" );
    generare_perumatari( 1 );
    fprintf( fout, "%d\n", rez );
    fclose( fout );
    return 0;
}