Cod sursa(job #1653053)

Utilizator piroComisia piro Data 15 martie 2016 18:23:40
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>

using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
int n;
int st[15],f[15], diag1[2 * 15 + 10], diag2[2 * 15 + 10];
int nr_sol = 0;

void back(int lung)
{
    int i;
    if(lung == n)
    {
        if (nr_sol == 0) {
            for(i=1;i<=n;i++)
                fout<<st[i]<<" ";
            fout<<"\n";
        }
        ++nr_sol;
    }
    else
    {
        for(i=1;i<=n;i++)
            if(f[i]==0 && diag1[lung + 1 - i + n] == 0 && diag2[lung + i + 1] == 0)
                {
                    f[i]=1;
                    diag1[lung - i + n + 1] = 1;
                    diag2[lung + i + 1] = 1;
                    st[lung+1]=i;
                    back(lung+1);
                    f[i]=0;
                    diag1[lung - i + n + 1] = 0;
                    diag2[lung + i + 1] = 0;
                }

    }


}


int main()
{
    fin>>n;
    back(0);
    fout << nr_sol;
    return 0;
}