Cod sursa(job #1807597)

Utilizator CriistinaMicula Cristina Criistina Data 16 noiembrie 2016 19:08:23
Problema Problema Damelor Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
#include <fstream>
#include <vector>

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

int sah[15][15], nr, ok, n;
vector <int> coloana;

bool verif(int l, int c)
{
    for(int i=1;i<=n;i++)
    {
        if(i!=l && sah[i][c]==1)
            return false;
        if(l-i>0)
        {
            if(c-i>0 && sah[l-i][c-i]==1)
                return false;
            if(c+i<=n && sah[l-i][c+i]==1)
                return false;
        }
        if(l+i<=n)
        {
            if(c-i>0 && sah[l+i][c-i]==1)
                return false;
            if(c+i<=n && sah[l+i][c+i]==1)
                return false;
        }
    }
    return true;
}
void backtracking(int l)
{
    for(int i=1;i<=n;i++)
    {
        if(verif(l, i))
        {
            sah[l][i]=1;
            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);
            coloana.pop_back();
            sah[l][i]=0;
        }
    }
}
int main()
{
    f>>n;
    backtracking(1);
    g<<nr;
    return 0;
}