Cod sursa(job #1876597)

Utilizator medicinedoctoralexandru medicinedoctor Data 12 februarie 2017 14:50:54
Problema Problema Damelor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <vector>
#include <cmath>

using namespace std;

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

vector <int> a;
vector <bool> q;
int n,x=0;
bool b=true;

void bk(int k)
{
    if (k==n)
    {
        if (b)
        {
            for (int i=0; i<n; cout << a[i]+1 << ' ',i++);
            cout << '\n';
            b=false;
        }
        x++;
        return;
    }
    for (int i=0; i<n; i++)
        if (!q[i])
        {
            bool b=true;
            for (int j=0; j<k; j++)
                if (abs(k-j)==abs(i-a[j]))
                {
                    b=false;
                    break;
                }
            if (b) q[i]=true,a[k]=i,bk(k+1),q[i]=false,a[k]=-1;
        }
}

main()
{
    n=12;//cin >> n;
    a.resize(n);
    q.resize(n);
    for (int i=0; i<n; i++) a[i]=-1,q[i]=false;
    bk(0);
    cout << x;
}