Cod sursa(job #1595762)

Utilizator alexmanoAlex Manolache alexmano Data 10 februarie 2016 15:24:22
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

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

int v[40], N, c, fr1[40], fr2[40], fr3[40];

int verif (int i)
{
    if (fr1[v[i]] > 1) return 0;
    if (fr2[i+v[i]] > 1) return 0;
    if (fr3[i-v[i]+20] > 1) return 0;
    return 1;
}

void back (int i)
{
    if (i > N)
    {
        if(c==0)
        {
            for(int k=1; k<i-1; k++) out<<v[k]<<' ';
            out<<v[i-1]<<'\n';
        }
        c++;
    }
    else
    {
        for (v[i] = 1; v[i] <= N; v[i]++)
        {
            fr1[v[i]]++;
            fr2[i+v[i]]++;
            fr3[i-v[i]+20]++;

            if (verif(i))
                back(i+1);

            fr1[v[i]]--;
            fr2[i+v[i]]--;
            fr3[i-v[i]+20]--;

        }
    }
}

int main()
{
    in >> N;
    back(1);
    out << c;
    return 0;
}