Cod sursa(job #2132684)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 15 februarie 2018 23:04:01
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
#define nmax 33

using namespace std;

ifstream f("damesah.in");
ofstream g("damesah.out");

int a[nmax],niv[nmax],col[nmax],DS[nmax],DP[nmax];
int i,j,n,ok,cnt;

void afis()
{
    for ( int i = 1 ; i <= n ; i ++ )
        g << niv[i] << " " ;
    g << "\n" ;
}

void back (int k)
{
    int i,dp,ds;
    if (k==n+1)
    {
        if (!cnt)afis();
        cnt++;
    }
    else
    {
        for ( i = 1 ; i <= n ; i ++ )
        {
            if (col[i]==0)
            {
                dp=(n-k)+i;
                ds=(n-i)+(n-k+1);
                if (DP[dp]==0 && DS[ds]==0)
                {
                    DP[dp]=1;
                    DS[ds]=1;
                    col[i]=1;
                    niv[k]=i;
                    col[i]=1;
                    back(k+1);
                    DP[dp]=0;
                    DS[ds]=0;
                    col[i]=0;
                    niv[k]=0;
                    col[i]=0;
                }
            }
        }
    }
}
int main ()
{
    f >> n ;
    back (1);
    g << cnt << "\n" ;
    return 0;
}