Pagini recente » Cod sursa (job #1155737) | Cod sursa (job #2569385) | Cod sursa (job #1880404) | Cod sursa (job #1943019) | Cod sursa (job #1724868)
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
int cnt = 0;
int sol[14];
int isValid(int col[], int dim, int val) {
for (int i = 1; i < dim; i++) {
//if (col[i] == val || col[i] + i == dim + val || abs(i - col[i]) == abs(val - dim))
if (col[i] == val) {
//cout << "coli = val\n";
return 0;
}
if (col[i] + i == dim + val) {
//cout << "suma e egala\n";
return 0;
}
if (abs(i - dim) == abs(val - col[i])) {
//cout << "col[" << i << "] - " << i << " ==" << val << " - " << dim << "\n";
return 0;
}
}
return 1;
}
void printV(int col[], int n) {
for (int i = 1; i <= n; i++) {
cout << col[i] << " ";
}
cout << "\n";
}
void countAll(int col[], int n, int row) {
//cout << "sunt pe linia " << row << "\n";
//printV(col, n);
for (int i = 1; i <= n; i++) {
if (isValid(col, row, i)) {
col[row] = i;
if (row == n) {
cnt++;
//cout << "------------------------\n";
if (cnt == 1) {
for (int j = 1; j <= n; j++) {
sol[j] = col[j];
}
}
//cout << "------------------------\n";
return;
} else {
//cout << "trimit pentru linia " << row + 1 << "\n";
countAll(col, n, row + 1);
}
}
}
col[row] = 0;
}
int main(void) {
int col[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
ifstream fi("damesah.in");
int n;
fi >> n;
countAll(col, n, 1);
ofstream fo("damesah.out");
for (int i = 1; i <= n; i++) {
fo << col[i] << ' ';
}
fo << "\n";
fo << cnt << "\n";
return 0;
}