Cod sursa(job #1810550)

Utilizator CriistinaMicula Cristina Criistina Data 20 noiembrie 2016 10:35:37
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>

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

int nr, n, vp[30], vs[30], vc[15];
vector <int> coloana;

bool verif(int l, int c)
{
    if(vc[c]==1 || vp[l-c+n]==1 || vs[l+c-1]==1)
        return false;
    return true;
}
void backtracking(int l)
{
    for(int i=1;i<=n;i++)
    {
        if(verif(l, i))
        {
            vc[i]=vp[l-i+n]=vs[l+i-1]=1;
            if(nr==0)
                coloana.push_back(i);
            if(l==n)
            {
                if(nr==0){
                    for(unsigned int j=0;j<coloana.size();j++)
                        g<<coloana[j]<<' ';
                    g<<'\n';
                }
                nr++;
            }
            else
                backtracking(l+1);
            if(nr==0)
                coloana.pop_back();
            vc[i]=vp[l-i+n]=vs[l+i-1]=0;
        }
    }
}
int main()
{
    f>>n;
    backtracking(1);
    g<<nr;
    return 0;
}