Cod sursa(job #1570283)

Utilizator gabrielamoldovanMoldovan Gabriela gabrielamoldovan Data 16 ianuarie 2016 12:25:04
Problema Problema Damelor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>

using namespace std;

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

const int maxn=15;
int n, nr, ok;
pair<int, int> regina[maxn];

void afisare()
{
    for(int i=1; i<=n; i++)
    {
        g<<regina[i].second<<" ";
    }
    g<<'\n';
}
inline int mabs(int x)
{
    if(x<0)
        return -x;
    return x;
}
bool valid(int ri, int rj, int nivel)
{
    for(int i=1; i<=nivel; i++)
        if(rj==regina[i].second || mabs(ri-regina[i].first)==mabs(rj-regina[i].second))
            return false;
    return true;
}

void back (int linie)
{
    if(linie==n+1)
    {
        nr++;
        if(ok==0)
        {
            afisare();
            ok=1;
        }
        return ;
    }
    for(int coloana=1; coloana<=n; ++coloana)
    {
        if(valid(linie, coloana, linie))
        {
            regina[linie]=make_pair(linie, coloana);
            back(linie+1);
        }
    }
}

int main()
{
    f>>n;
    back(1);
    g<<nr;
    return 0;
}