Cod sursa(job #3237094)

Utilizator tedicTheodor Ciobanu tedic Data 4 iulie 2024 18:35:29
Problema Problema Damelor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
#include <vector>
#include <climits>

using namespace std;
ifstream cin("damesah.in");
ofstream cout("damesah.out");
int n;
vector<int>coloana;
bool exista[15];
int cnt=0;
void verif()
{
    bool ok=0;
    for(int i=0; i<coloana.size()-1; i++)
    {
        for(int j=i+1; j<coloana.size(); j++)
        {
            if(abs(j-i)==abs(coloana[j]-coloana[i]))
            {
                ok=1;
                break;
            }
        }
        if(ok)
            break;
    }
    if(ok==0)
    {
        cnt++;
        if(cnt==1)
        {
            for(int col:coloana)
                cout<<col<<" ";
        }
    }
}
void backtracking(int val)
{
    if(val>n)
    {
        verif();
        return;
    }
    else
    {
        for(int i=1; i<=n; i++)
        {
            if(!exista[i])
            {
                exista[i]=1;
                coloana.push_back(i);
                backtracking(val+1);
                coloana.pop_back();
                exista[i]=0;
            }
        }
    }
}
int main()
{
    cin>>n;
    backtracking(1);
    cout<<'\n'<<cnt;
    return 0;
}