Cod sursa(job #2720948)

Utilizator Casian_doispeChiriac Casian Casian_doispe Data 11 martie 2021 14:01:47
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <fstream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <climits>

#define MOD 4001

using namespace std;

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

int n ;

int v[1009], okk ;

int bak(int k)
{

    if(k == n + 1)
    {

        if(!okk)
        {

        for(int f = 1 ; f <= n ; f ++)
            cout << v[f] << " " ;

            cout << endl ;
                okk = 1 ;
            }

        return 1 ;

    }

    ///for(int f = 1 ; f < k ; f ++)
    ///    cout << v[f] << " " ;
    ///    cout << endl ;
    /// trebe sa punem cel mai mic numar posibil pe aceasta pozitie, un numar intre 1 si n

    int ss = 0 ;

    for(int f = 1 ; f <= n ; f ++)
    {

        int ok = 1 ;

        for(int e = 1 ; e < k ; e ++)
        {

        if(v[e] == f){ok = 0 ; break ;} ;

        /// k este linia celui curent
        /// f este coloana celui curent
        /// e este linia celui cu care verif
        /// v[e] este coloana celui cu care verif

        if(k - e == abs(f - v[e])){ok = 0 ; break ;} ;

        }

        if(ok)v[k] = f, ss += bak(k + 1) ;

    }

    return ss ;
}

int main()
{

    cin >> n ;

    cout << bak(1) ;

    return 0;

}