Pagini recente » Cod sursa (job #1591764) | Cod sursa (job #77984) | Cod sursa (job #1154669) | Cod sursa (job #1775598) | Cod sursa (job #1730870)
#include <fstream>
using namespace std ;
ifstream f ("damesah.in") ;
ofstream g ("damesah.out") ;
int n , a[15][15] , nr_sol , x[15] , y[15] ;
int di[] = { -1 , -1 , 1 , 1 } ,
dj[] = { -1 , 1 , -1 , 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 )
{
if ( x[i] || y[j] )
return 0 ;
int ok = 1 , cnt = 1 ;
while ( ok && cnt <= n )
{
for ( int k = 0 ; k < 4 ; ++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 j = 1 ; j <= n ; ++j )
if ( a[k][j] == 0 )
if ( ok ( k , j ) )
{
a[k][j] = 1 , x[k] = 1 , y[j] = 1 ;
back ( k + 1 ) ;
a[k][j] = 0 , x[k] = 0 , y[j] = 0 ;
}
}
}
int main ()
{
f >> n ;
back ( 1 ) ;
g << nr_sol ;
}