Cod sursa(job #1122780)

Utilizator addy01adrian dumitrache addy01 Data 25 februarie 2014 20:24:45
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

ifstream in("damesah.in");
ofstream out("damesah.out");
int k,n,v[14];
int sm=0;
void init()
{
    v[k]=0;
}
int modul (int a)
{
    if(a>0)
        return a;
    return -a;
}

bool succesor()
{
    if(v[k]<n)
    {
        v[k]++;
        return 1;
    }
    return 0;
}

void tipar()
{
    if(sm==0)
    {int i;
    for(i=1;i<=n;i++)
        printf("%d ",v[i]);
    out<<"\n";}
    sm++;
}

bool solutie()
{
    return k==n;
}

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

void back()
{
    bool as;
    k=1;
    init();
    while(k)
    {
    do{
         as=succesor();
    }while(!valid()&&as);

    if(as)
        {
            if(solutie())
            {
                tipar();
            }
            else
                {
                    k++;
                    init();
                }
        }
    else
        k--;

    }
}

int main()
{
    in>>n;
    back();
    out<<sm;
    return 0;
}