Cod sursa(job #2534314)

Utilizator mihaistamatescuMihai Stamatescu mihaistamatescu Data 30 ianuarie 2020 13:27:13
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
using namespace std;
int n,ok=1,sol;
int x[30],f[30];
ifstream fin ("damesah.in");
ofstream fout ("damesah.out");
int modul(int x) {
    return x > 0 ? x : -x;
}
int verif (int pas) {
    for (int i=1;i<pas;i++)
        if (pas-i==modul(x[pas]-x[i]))
            return 0;
    return 1;
}
void backtrack(int pas) {
    if (pas==n+1){
        sol++;
        if (ok==1){
            for (int i=1;i<=n;i++){
                fout<<x[i]<<" ";
            }
            ok=0;
        }
    }
    else
        for (int i=1;i<=n;i++) {
            if (f[i]==0) {
                x[pas]=i;
                f[i]=1;
                if (verif(pas)){
                    backtrack(pas+1);
                }
                f[i]=0;
            }
        }
}
int main () {
    fin>>n;
    backtrack(1);
    fout<<"\n"<<sol;
}