Cod sursa(job #1129822)

Utilizator barabasi_csongorBarabasi Csongor barabasi_csongor Data 28 februarie 2014 09:38:41
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <cmath>
using namespace std;
int n;
int v[100],sol[100];
int rez;
int da=0;
void init()
{
    for(int i=1;i<=40;i++) sol[i]=100;
}

int afis()
{
    rez++;
    if(da==0)
        {
            da=1;
            for(int i=1;i<=n;i++) sol[i]=v[i];
        }
}

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

void gen(int k)
{
    if(k==n+1) afis();
    else
        {
            for(int i=1;i<=n;i++)
                {
                    v[k]=i;
                    if(analiza(k)) gen(k+1);
                }
        }
}

int main()
{freopen("damesah.in","r",stdin);
freopen("damesah.out","w",stdout);
scanf("%d",&n);
gen(1);
for(int i=1;i<=n;i++) printf("%d ",sol[i]);
printf("\n%d",rez);
return 0;
}