Pagini recente » Cod sursa (job #2144848) | Cod sursa (job #363543) | Arhiva de probleme | Cod sursa (job #822970) | Cod sursa (job #2162806)
#include <fstream>
using namespace std;
ifstream fin ("damesah.in");
ofstream fout ("damesah.out");
int n, m, sol, v[13];
bool l[13], c[13], d1[25], d2[25];
void bt ( int k, int row )
{
if ( k == n )
{
if ( !sol )
for ( int i = 0; i < n; ++i )
fout << v[i] + 1 << " ";
++sol;
return;
}
int i, j, t1, t2;
for ( i = row + 1; i < n; ++i )
if ( !l[i] ) /// level 1
for ( j =0; j < n; ++j )
if ( !c[j] ) /// level 2
{
t1 = i + j;
if ( !d1[t1]) /// level 3
{
t2 = i + m - j;
if ( !d2[t2] ) /// level 4
{
l[i] = c[j] = d1[t1] = d2[t2] = 1;
v[i] = j;
bt ( k + 1, i );
l[i] = c[j] = d1[t1] = d2[t2] = 0;
}
}
}
}
int main()
{
fin >> n;
m = n - 1;
bt ( 0, -1 );
fout << '\n' << sol;
}