Cod sursa(job #1442780)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 26 mai 2015 12:04:08
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
#include <cmath>

using namespace std;

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

int x[13], sol[13];

void copie (int b[], int a[], int n)
{
    int i;
    for (i = 1; i <= n; i++)
        b[i] = a[i];
}

bool EsteSol(int k)
{
    int i;
    for (i = 1; i < k; i++)
        if (x[k] == x[k] || k - i == abs(x[k] - x[i]))
            return false;
    return true;
}

int generare(int n)
{
    int nrsol = 0, k = 1;
    bool valid = false, confirmat = 0;
    while (k > 0)
    {
        valid = false;
        while((x[k] < n) && (valid == 0))
        {
            x[k]++;
            valid = EsteSol(k);
        }

        if (!valid)
            k--;
        else
        {
            if (k == n)
            {
                if (!confirmat)
                {
                    copie(sol, x, n);
                    confirmat = true;
                }
                nrsol++;
            }
            else
                x[k++] = 0;
        }
    }

    return nrsol;
}

int main()
{
    int xxxx, N, i;
    f >> xxxx;
    N = generare(xxxx);
    for (i = 1; i <= xxxx; i++)
        g << sol[i] << " ";
    g << "\n" << N;
    return 0;
}