Cod sursa(job #1994385)

Utilizator Neamtu_StefanStefan Neamtu Neamtu_Stefan Data 24 iunie 2017 20:23:15
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
//** PROBLEMA DAMELOR NUMELE ESTE GRESIT. PROBLEMA CU DAME ESTE CEA CU BILA **//
using namespace std;

ifstream fin("backtracking.in");
ofstream fout("backtracking.out");

int n,st[102],k,as;

void init()
{
    st[k]=0;
}

bool succesor()
{
    if (st[k]<n)
    {
        st[k]++;
        return 1;
    }
    return 0;
}

bool valid()
{
    for (int i=1;i<k;i++)
        if (k-i==st[k]-st[i] || k-i==st[i]-st[k] || st[k]==st[i]) return 0;
    return 1;
}

bool sol()
{
    return (k==n);
}

void afisare()
{
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=n;j++)
        {
            if (j==st[i]) fout << "D ";
            else fout << 0 << " ";
        }
        fout << "\n";
    }
    fout << "\n";
}

int main()
{
    fin >> n;

    k=1;
    init();

    while (k)
    {
        do
        {
            as=succesor();
        }while (as && !valid());

        if (as)
            if (sol()) afisare();
            else
            {
                k++;
                init();
            }
        else k--;
    }

    return 0;
}