Cod sursa(job #1913572)

Utilizator tavisOctavian Matei tavis Data 8 martie 2017 13:14:30
Problema Problema Damelor Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <math.h>
using namespace std;
ifstream in("damesah.in");
ofstream out("damesah.out");
typedef int sir[100];
sir x,a;
int i,p,k,n,as,ev;
void succ(sir x, int k, int& as){
    if(x[k]<n){
        as=1;
        x[k]=x[k]+1;
    }else as=0;
}
void valid(sir x, int k,int& ev){
    ev=1;
    for(i=1;i<=k-1;i++)
        if((x[k]==x[i])||(k-i==abs(x[i]-x[k])))
            ev=0;
}
void afis(sir x, int k){
    int i,j;
    for(i=1;i<=k;i++)
    {
        for(j=1;j<=k;j++)
        {
            if(j==x[i]){
                out<<j<<" ";
                j=k+1;
            }
        }
    }
    out<<endl;

}
int main()
{
    int okdame=0,nrdame=0;
    in>>n;
    k=1;
    x[k]=0;
    while(k>0){
        do{
            succ(x,k,as);
            if(as)
                valid(x,k,ev);
        }while(as&&!ev);
        if(as){
            if(k==n){
                    if(okdame==0){afis(x,k);okdame=1;nrdame++;}
                    else nrdame++;
            }
            else{
                k++;
                x[k]=0;
            }
        }else k--;
    }
    out<<nrdame;

    return 0;
}