Cod sursa(job #1423332)

Utilizator Harsan_SabinHarsan Sabin Harsan_Sabin Data 21 aprilie 2015 18:43:40
Problema Problema Damelor Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>

using namespace std;
/*ifstream cin("Dame.in");
ofstream cout("Dame.out");*/
ifstream cin("damesah.in");
ofstream cout("damesah.out");
int n,v[20],nr;
void Tipar()
{
    int colj=0;
    for(int j=1;j<=n;++j)
    {
        colj=v[j]%n;
        if(v[j]%n==0)
            colj=n;
        cout<<colj<<" ";
    }
    cout<<'\n';
}
int Valid(int i)
{
    int coli=v[i]%n;
    int colj=0;
    int dif=0;
    if(v[i]%n==0)
        coli=n;
    for(int j=1;j<i;++j)
    {
        colj=v[j]%n;
        if(v[j]%n==0)
            colj=n;
        if(coli==colj)
            return 0;
        dif=i-j;
        if(coli==colj-dif||coli==colj+dif)
            return 0;
    }
    return 1;
}
void Back(int i)
{
    if(i>n)
    {
        if(nr==0)
            Tipar();
        nr++;
    }
    else
        for(int j=(i-1)*n+1;j<=i*n;++j)
        {
            v[i]=j;
            if(Valid(i))
                Back(i+1);
        }
}
int main()
{
    cin>>n;
    Back(1);
    cout<<nr;
    return 0;
}