Cod sursa(job #2089395)

Utilizator valorosu_300Cristian Gherman valorosu_300 Data 16 decembrie 2017 14:22:53
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
using namespace std;
ifstream in("damesah.in");
ofstream out("damesah.out");
const int N = 15;
int st[N], n;
unsigned long long sol;
bool dp[2*N], ds[2*N], viz[N];
void afis(int l){
    for(int i=1;i<l;i++)
        out<<st[i]<<" ";
    out<<"\n";
}
void bkt(int l){
    int diagP, diagS;
    if(l == n+1 && (sol++ == 0))
        afis(l);
    else
        for(int i=1;i<=n;i++){
            diagP = i - l + n;
            diagS = i + l;
            if(viz[i] == false && dp[diagP] == false && ds[diagS] == false){
                viz[i] = dp[diagP] = ds[diagS] = true;
                st[l] = i;
                bkt(l+1);
                viz[i] = dp[diagP] = ds[diagS] = false;
            }
        }
}
int main()
{
    in>>n;
    in.close();
    bkt(1);
    out<<sol<<"\n";
    out.close();
    return 0;
}