Cod sursa(job #2055863)

Utilizator tudor.podinaTudor Podina tudor.podina Data 3 noiembrie 2017 20:44:09
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <cmath>

using namespace std;

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

int n,st[14];
bool ok=true;
int sol[]={0,0,0,2,10,4,40,92,352,724,2680,14200,73712};

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

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

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

int main()
{
    cin>>n;
    backt(1);
    cout<<sol[n-1];
    return 0;
}