Pagini recente » Cod sursa (job #516230) | Cod sursa (job #3127255) | Cod sursa (job #3240878) | Cod sursa (job #2125421) | Cod sursa (job #2194173)
#include <iostream>
#include <fstream>
#define DMAX 14
using namespace std;
ifstream in("damesah.in");
ofstream out("damesah.out");
int n;
int c[DMAX], nrSol;
bool afisat;
void citire(){
in >> n;
in.close();
}
void afisareSol(){
for(int i = 1; i<= n; i++){
out << c[i] <<' ';
}
out << '\n';
}
void prima_Solutie(int k){
for(int col = 1; col <= n && afisat == false; col++) {
bool ok = true;
for(int regina = 1; regina < k; regina++){
if(c[regina] == col || abs(c[regina] - col) == abs(regina - k)){
ok = false;
break;
}
}
if(ok == true){
c[k] = col;
if(k == n){
afisareSol();
afisat = true;
}else if(k < n){
prima_Solutie(k+1);
}
}
}
}
void pune_regina(int k){
if(k == n+1){
nrSol++;
}else{
for(int col = 1; col <= n; col++){
bool ok = true;
for(int regina = 1; regina < k; regina++){
if(c[regina] == col || abs(c[regina] - col) == abs(regina - k)){
ok = false;
break;
}
}
if(ok == true){
c[k] = col;
pune_regina(k+1);
}
}
}
}
int main() {
citire();
prima_Solutie(1);
pune_regina(1);
out << nrSol;
out.close();
return 0;
}