Pagini recente » Cod sursa (job #16723) | Cod sursa (job #1906849) | Cod sursa (job #1646842) | Cod sursa (job #688609) | Cod sursa (job #3237736)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "damesah.in" );
ofstream fout( "damesah.out" );
const int MAXN = 13;
bool okL[MAXN], okC[MAXN], okDp[2 * MAXN - 1], okDs[2 * MAXN - 1];
int res;
int dame[MAXN];
int verify( int l, int c, int n ) {
if ( okL[l] == 0 && okC[c] == 0 && okDp[n - l + c - 1] == 0 && okDs[l + c] == 0 ) {
return 1;
}
return 0;
}
void bkt( int l, int n ) {
if ( l == n ) {
if ( res == 0 ) {
for ( int i = 0; i < n; ++i ) {
fout << dame[i] + 1 << " ";
}
fout << "\n";
}
++res;
} else {
for ( int c = 0; c < n; ++c ) {
if ( verify(l, c, n) ) {
dame[l] = c;
okL[l] = okC[c] = okDp[n - l + c - 1] = okDs[l + c] = true;
bkt(l + 1, n);
okL[l] = okC[c] = okDp[n - l + c - 1] = okDs[l + c] = false;
}
}
}
}
int main() {
ios_base::sync_with_stdio(0);
fin.tie(0);
int n;
fin >> n;
bkt(0, n);
fout << res;
fin.close();
fout.close();
return 0;
}