Pagini recente » Cod sursa (job #1707536) | Cod sursa (job #191195) | Cod sursa (job #461784) | Cod sursa (job #1192987) | Cod sursa (job #1730867)
#include <fstream>
using namespace std ;
ifstream f ("damesah.in") ;
ofstream g ("damesah.out") ;
int n , a[15][15] , nr_sol , x[15] ;
int di[] = { -1 , -1 , -1 , 0 , 0 , 1 , 1 , 1 } ,
dj[] = { -1 , 0 , 1 , -1 , 1 , -1 , 0 , 1 } ;
void afis ()
{
++nr_sol ;
if ( nr_sol == 1 )
{
for ( int i = 1 ; i <= n ; ++i )
for ( int j = 1 ; j <= n ; ++j )
if ( a[i][j] )
g << j << " " ;
g << "\n" ;
}
}
int ok ( int i , int j )
{
int ok = 1 , cnt = 1 ;
while ( ok && cnt <= n )
{
for ( int k = 0 ; k < 9 ; ++k )
{
int ii = i + cnt * di[k] , jj = j + cnt * dj[k] ;
if ( ii > 0 && ii <= n && jj > 0 && jj <= n )
if ( a[ii][jj] )
ok = 0 ;
}
++cnt ;
}
return ok ;
}
void back ( int k )
{
if ( k == n + 1 )
afis () ;
else if ( k <= n )
{
for ( int i = 1 ; i <= n ; ++i )
for ( int j = 1 ; j <= n ; ++j )
if ( a[i][j] == 0 )
if ( i > x[k-1] )
if ( ok ( i , j ) )
{
a[i][j] = 1 ;
x[k] = i ;
back ( k + 1 ) ;
x[k] = 0 ;
a[i][j] = 0 ;
}
}
}
int main ()
{
f >> n ;
back ( 1 ) ;
g << nr_sol ;
}