Cod sursa(job #2055824)

Utilizator tudor.podinaTudor Podina tudor.podina Data 3 noiembrie 2017 19:52:27
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <cmath>

using namespace std;

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

int n,sol,st[20];

int afisare()
{
    for(int i=1;i<=n;i++)
        cout<<st[i]<<" ";
}

int valid(int k)
{
    for(int i=1;i<k;i++)
        if(st[i]==st[k] || abs(i-st[i])==abs(k-st[k]) || abs(i+st[k+i-1])==abs(k+st[k]))
            return 0;
    return 1;
}

int backt(int k)
{
    for(int i=1;i<=n;i++)
    {
        st[k]=i;
        if(valid(k))
            if(k==n)
            {
                sol++;
                if(sol==1)
                    afisare();
            }
            else backt(k+1);
    }
}

int main()
{
    cin>>n;
    backt(1);
    cout<<"\n"<<sol;
    return 0;
}