Cod sursa(job #1905515)

Utilizator bt.panteaPantea Beniamin bt.pantea Data 6 martie 2017 08:46:52
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <bitset>
#define NMAX 15
//#define abs(a) (a > 0 ? a : -a)
using namespace std;
ifstream f ("damesah.in");
ofstream g ("damesah.out");
int c,i,st[14],k,n;
bitset < NMAX> b(false);
inline int abs(int a)
{
    if (a > 0) return a;
    return -a;
}
inline int valid (int k)
{
    int i;
    for (i=1;i<k;i++)
        if ( abs(st[k] - st[i]) == k - i) return 0;
    return 1;
}
inline void tip ()
{
    int i;
    for (i=1;i<=n;i++)
        g<<st[i]<<' ';
    g<<'\n';
}
void Back (int k)
{
    for (int i=1;i<=n;i++)
    {
        if (b[i]) continue;
        st[k]=i;
        b[i] = 1;
        if (valid(k))
        {
            if (k==n)
            {
                c++;
                if (c==1) tip ();
            }
            else Back (k+1);
        }
        b[i] = 0;
    }
}
int main()
{
    f>>n;
    c=0;
    Back (1);
    g<<c;
    return 0;
}