Pagini recente » Cod sursa (job #2122692) | Cod sursa (job #667692) | Cod sursa (job #220299) | Cod sursa (job #1259704) | Cod sursa (job #1876716)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("damesah.in");
ofstream cout("damesah.out");
vector <int> a(13);
vector <bool> q(13),d1(25),d2(25);
int x=0,n=4;
void bk(int k)
{
if (k==n)
{
if (!x)
{
for (int i=0; i<n; cout << a[i]+1 << ' ',i++);
cout << '\n';
}
x++;
return;
}
for (int i=0; i<n; i++)
if (!q[i] && !d1[i-k+n-1] && !d2[k+i])
{
a[k]=i;
q[i]=d1[i-k+n-1]=d2[i+k]=true;
bk(k+1);
q[i]=d1[i-k+n-1]=d2[i+k]=false;
}
}
main()
{
cin >> n;
bk(0);
cout << x;
}
/*
#include <cstdio>
#define MAX_N 14
int queen[MAX_N];
bool col[MAX_N], main_diag[MAX_N * 2], sec_diag[MAX_N * 2];
int ans;
void bkt( FILE *fout, int l, int n ) {
if ( l == n ) {
if ( ans < 1 ) {
for ( int c = 0; c < n; c++ )
fprintf( fout, "%d ", queen[c] + 1 );
fprintf( fout, "\n" );
}
++ans;
} else {
for ( int c = 0; c < n; c++ ) {
if ( !col[c] && !main_diag[c - l + n - 1] && !sec_diag[l + c] ) {
queen[l] = c;
col[c] = main_diag[c - l + n - 1] = sec_diag[l + c] = true;
bkt( fout, l + 1, n );
col[c] = main_diag[c - l + n - 1] = sec_diag[l + c] = false;
}
}
}
}
int main () {
FILE *fin, *fout;
fin = fopen( "damesah.in", "r" );
int n;
fscanf( fin, "%d", &n );
fclose( fin );
fout = fopen( "damesah.out", "w" );
bkt( fout, 0, n );
fprintf( fout, "%d\n", ans );
fclose( fout );
}*/