Pagini recente » Cod sursa (job #3180226) | Cod sursa (job #1705132) | Cod sursa (job #3269887) | Cod sursa (job #175413) | Cod sursa (job #2345185)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int N, A[18], printed = false, counter = 0;
void print_sol(int n){
for(int i = 1; i <= n; i++){
fout << A[i] << " ";
}
fout << "\n";
}
int abs(int a){
if(a >= 0) return a; else return -a;
}
bool place(int pos){
for(int i = 1; i < pos; i++){
if((A[i] == A[pos]) || abs(A[i] - A[pos]) == abs(i - pos))
return 0;
}
return 1;
}
void queen (int N){
int k = 1;
while(k!=0){
do {
A[k]++;
} while ( (A[k] <= N) && !place(k));
if(A[k] <= N){
if(k == N ) {
counter++;
if(printed == false){
print_sol(N);
printed = true;
}
}
else {
k++;
A[k] = 0;
}
} else {
k--;
}
}
fout << counter;
}
int main()
{
fin >> N;
queen(N);
}