Pagini recente » Cod sursa (job #1240429) | Cod sursa (job #2148215) | Cod sursa (job #3039363) | Cod sursa (job #2695942) | Cod sursa (job #1379725)
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream is("damesah.in");
ofstream os("damesah.out");
int n, sol[15], lin[15], diag[50], dsec[50], nrsol;
void Gen( int k );
bool Valid( int k );
void Write( int k );
int main()
{
is >> n;
Gen(1);
os << nrsol;
is.close();
os.close();
return 0;
}
void Gen( int k )
{
if ( k - 1 == n )
{
nrsol++;
if ( nrsol == 1 )
Write(k-1);
return;
}
for ( int i = 1; i <= n; i++ )
if ( !lin[i] && !diag[n + k - i + 1] && !dsec[i + k - 1] )
{
sol[k] = i;
lin[i] = true;
diag[n + k - i + 1] = true;
dsec[i + k - 1] = true;
Gen( k + 1 );
lin[i] = false;
diag[n + k - i + 1] = false;
dsec[i + k - 1] = false;
}
}
void Write( int k )
{
for ( int i = 1; i <= k; i++ )
os << sol[i] << ' ';
os << '\n';
}