Cod sursa(job #3149773)

Utilizator proflaurianPanaete Adrian proflaurian Data 12 septembrie 2023 16:09:12
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n,C[15],DP[30],DS[30],s[15],p[15],nr;
void bkt(int i,int j)/// backtracking = metoda de programare folosita
{
    if(j==n+1)return;
    if(i==n+1)/// caz special - am gasit o solutie
    {
        nr++;/// contorizez ca am gasit o noua solutie !!!
        if(nr==1)/// daca am gasit prima solutie o afisez !!!
        {
            for(int i=1;i<=n;i++)
                g<<s[i]<<' ';
            g<<'\n';
        }
        return;
    }
    if(C[j]==0&&DP[n-i+j]==0&&DS[i+j-1]==0)///(i,j) este neatacata de dame de pe linii < i
    {
        /// incerc sa construiesc o solutie cu dama pusa aici !!!
        s[i]=j;
        C[j]=DP[n-i+j]=DS[i+j-1]=1;
        bkt(i+1,1);
        C[j]=DP[n-i+j]=DS[i+j-1]=0;
    }
    bkt(i,j+1);
}
int main()
{
    f>>n;
    bkt(1,1);
    g<<nr<<'\n';
    return 0;
}