Cod sursa(job #1746422)

Utilizator PaulCbnCiobanu Paul PaulCbn Data 23 august 2016 11:42:47
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <cstdio>
#define NMAX 14
using namespace std;

int N;
int viz1[NMAX],viz2[2*NMAX],viz3[2*NMAX];
int x[NMAX];

void citire()
{
    scanf("%d",&N);
}
int nr;
void afis()
{
    for(int i=1; i<=N; i++)
        printf("%d ",x[i]);
    printf("\n");
}


int ok=0;
void bec(int k)
{

    for(x[k]=1; x[k]<=N; x[k]++)
        if(!viz1[x[k]]&&!viz2[k+x[k]]&&!viz3[k-x[k]+N])
            if(k==N)
            {
                if(ok==0)
                    afis();
                ok=1;
                nr++;
            }
            else
            {
                viz1[x[k]]=viz2[k+x[k]]=viz3[k-x[k]+N]=1;
                bec(k+1);
                viz1[x[k]]=viz2[k+x[k]]=viz3[k-x[k]+N]=0;
            }


}

void bec2(int k)
{
    if(k==N+1)
    {
        afis();
    }
    else
    {
        for(x[k]=1;x[k]<=N;x[k]++)
            if(!viz1[x[k]]&&!viz2[k+x[k]]&&!viz3[k-x[k]+N])
            {

            }
    }
}

int main()
{
    freopen("damesah.in","r",stdin);
    freopen("damesah.out","w",stdout);
    citire();
    bec(1);
    printf("%d",nr);
    return 0;
}