Cod sursa(job #3004591)

Utilizator tudor_costinCostin Tudor tudor_costin Data 16 martie 2023 14:17:05
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n,cnt=0,first=1;
int fcol[100],fdiaga[100],fdiags[100];
vector<int> coloane;
bool NotSeeing(int lin,int col)
{
    if(fcol[col]==1 || fdiags[lin-col+15]==1 || fdiaga[lin+col]==1)
    {
            return false;
    }
    return true;
}
void solve(int lin)
{
    if(lin==n+1)
    {
        cnt++;
        if(first==1)
        {
            for(int i=0;i<n;i++)
            {
                fout<<coloane[i]<<' ';
            }
            first=0;
        }
        return;
    }
    for(int i=1;i<=n;i++)
    {
        if(NotSeeing(lin,i))
        {
            coloane.push_back(i);
            fcol[i]=1;
            fdiags[lin-i+15]=1;
            fdiaga[lin+i]=1;
            solve(lin+1);
            fcol[i]=0;
            fdiags[lin-i+15]=0;
            fdiaga[lin+i]=0;
            coloane.pop_back();
        }
    }
    return;

}
int main()
{
    fin>>n;
    solve(1);
    fout<<'\n'<<cnt;
    return 0;
}