Cod sursa(job #2442185)

Utilizator Leonard123Mirt Leonard Leonard123 Data 23 iulie 2019 09:56:44
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <fstream>
using namespace std;
int n,m[15][15],fl[14],fc[14],fds[30],fdp[30],solutii,ok=1;
ifstream cin("damesah.in");
ofstream cout("damesah.out");

bool verific(int linie, int coloana, int diagsec, int diagpri){
    if(fl[linie])
        return false;
    if(fc[coloana])
        return false;
    if(fds[diagsec])
        return false;
    if(fdp[diagpri])
        return false;
    return true;
}

void dama(int linie){
    if(linie==n+1){
        solutii++;
        if(ok==1){
            for(int i=1; i<=n; i++)
                for(int j=1; j<=n; j++)
                    if(m[i][j]==1)
                        cout<<j<<' ';
            cout<<'\n';
            ok=0;
        }
        return;
    }
    for(int i=1; i<=n; i++)
        if(verific(linie,i,i+linie,n-i+linie-1)){
            m[linie][i]=1;
            fl[linie]=1;
            fc[i]=1;
            fdp[n-i+linie-1]=1;
            fds[i+linie]=1;
            dama(linie+1);
            m[linie][i]=0;
            fl[linie]=0;
            fc[i]=0;
            fds[i+linie]=0;
            fdp[n-i+linie-1]=0;
        }
};


int main()
{
    cin>>n;
    dama(1);
    cout<<solutii;
    return 0;
}