Pagini recente » Cod sursa (job #824288) | Cod sursa (job #1157026) | Cod sursa (job #2499326) | Cod sursa (job #2049444) | Cod sursa (job #3265508)
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
//evaluare
long long n, cnt;
int a[20][20];
int dx[8] = {-1, -1, -1, 0}; // Directions to check
int dy[8] = {0, -1, 1, -1};
void printsol() {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
if (a[i][j] == 1)
fout << j << " ";
}
fout << '\n';
}
bool verif(int l, int c) {
for (int i = 0; i < 4; i++) {
bool ok = 0;
int lv = l + dx[i];
int cv = c + dy[i];
if (lv < 1 || lv > n || cv < 1 || cv > n)
continue;
while (lv >= 1 && lv <= n && cv >= 1 && cv <= n && a[lv][cv] == 0) {
ok = 1;
lv += dx[i];
cv += dy[i];
if (lv < 1 || lv > n || cv < 1 || cv > n)
break;
if (a[lv][cv] == 1) {
ok = 0;
break;
}
}
if (ok == 0)
return false;
}
return true;
}
int asezD(int c) {
if (c > n) {
cnt++;
if (cnt == 1)
printsol();
return cnt;
}
for (int i = 1; i <= n; i++) {
if (verif(i, c)) {
a[i][c] = 1;
asezD(c + 1);
a[i][c] = 0;
}
}
return cnt;
}
int main() {
fin >> n;
fout << asezD(1);
return 0;
}