Cod sursa(job #2791028)

Utilizator KarinaDKarina Dumitrescu KarinaD Data 29 octombrie 2021 23:27:40
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;

ifstream fin ( "damesah.in" );
ofstream fout ( "damesah.out" );

const int N = 14;
int sol [ N ], c [ N ], l [ N ], d1 [ 2 * N ], d2 [ 2 * N ];
int cnt = 0;

void dame( int i, int n ) {
    
    if ( i == n ) {
        
        if ( cnt == 0 ){
            for ( int j = 0; j < n; j++ )
                fout << sol [ j ] + 1 << " ";
        }
        cnt++;
        
        return;
    }
    
    for ( int j = 0; j < n; j++ )
        
        if ( c [ j ] == 0 && d1 [ i + n - j - 1 ] == 0 && d2 [ i + j ] == 0 ) {
            
            l [ i ] = 1;
            c [ j ] = 1;
            d1 [ i + n - j - 1 ] = 1;
            d2 [ i + j ] = 1;
            sol [ i ] = j;
            
            dame( i + 1, n );
            
            l [ i ] = 0;
            c [ j ] = 0;
            d1 [ i + n - j - 1 ] = 0;
            d2 [ i + j ] = 0;
            sol [ i ] = 0;
        }
}

int main() {
    
    int n;
    
    fin >> n;
    
    dame ( 0, n );
    
    fout << "\n" << cnt;
    
    return 0;
    
}