Cod sursa(job #2283145)

Utilizator canmihaiCancescu Mihai canmihai Data 15 noiembrie 2018 00:36:37
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,x[1000],f[1000],f2[1000],s[1000],sol;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
void afis(int k){
    for(int i=1;i<=k;i++)
        fout<<x[i]<<" ";
    fout<<endl;
}
bool verif(int k,int i){
    if(f[x[k]]==1)
        return false;
    if(f2[k-i+100]==1)
        return false;
    if(s[k+i]==1)
        return false;
    if(k<=n)
        return true;
    return false;
}
void back(int k){
    for(int i=1;i<=n;++i){
        x[k]=i;
        if(verif(k,i)){
            f[x[k]]=1;
            f2[k-i+100]=1;
            s[k+i]=1;
            if(k==n && sol>0)
                sol++;
            if(k==n && sol==0){
                afis(k);
                sol++;
            }
            back(k+1);
            f[x[k]]=0;
            s[k+i]=0;
            f2[k-i+100]=0;
        }

    }
}
int main (){

    fin>>n;
    back(1);
    fout<<sol;
    return 0;
}