Pagini recente » Cod sursa (job #996650) | Cod sursa (job #2851937) | Cod sursa (job #2401748) | Cod sursa (job #231479) | Cod sursa (job #2801129)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 13;
bool col[NMAX + 1];
bool diag1[2 * NMAX + 1];
bool diag2[2 * NMAX + 1];
int cnt;
int afisat;
int n;
int ans[NMAX + 1];
ifstream fin( "damesah.in" );
ofstream fout( "damesah.out" );
void bkt( int lin ) {
if ( lin == n + 1 ) {
cnt ++;
if ( !afisat ) {
for ( int i = 1; i <= n; i ++ ) {
fout << ans[i] << ' ';
}
afisat = 1;
}
}
for ( int c = 1; c <= n; c ++ ) {
int d1 = lin + c;
int d2 = NMAX + lin - c;
if ( !col[c] && !diag1[d1] && !diag2[d2] ) {
col[c] = 1;
diag1[d1] = 1;
diag2[d2] = 1;
ans[lin] = c;
bkt( lin + 1 );
col[c] = 0;
diag1[d1] = 0;
diag2[d2] = 0;
}
}
}
int main() {
fin >> n;
bkt( 1 );
fout << '\n' << cnt;
return 0;
}