Pagini recente » Cod sursa (job #1562868) | Cod sursa (job #469544) | Cod sursa (job #2148232) | Istoria paginii utilizator/shniappy | Cod sursa (job #2132684)
#include <fstream>
#define nmax 33
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int a[nmax],niv[nmax],col[nmax],DS[nmax],DP[nmax];
int i,j,n,ok,cnt;
void afis()
{
for ( int i = 1 ; i <= n ; i ++ )
g << niv[i] << " " ;
g << "\n" ;
}
void back (int k)
{
int i,dp,ds;
if (k==n+1)
{
if (!cnt)afis();
cnt++;
}
else
{
for ( i = 1 ; i <= n ; i ++ )
{
if (col[i]==0)
{
dp=(n-k)+i;
ds=(n-i)+(n-k+1);
if (DP[dp]==0 && DS[ds]==0)
{
DP[dp]=1;
DS[ds]=1;
col[i]=1;
niv[k]=i;
col[i]=1;
back(k+1);
DP[dp]=0;
DS[ds]=0;
col[i]=0;
niv[k]=0;
col[i]=0;
}
}
}
}
}
int main ()
{
f >> n ;
back (1);
g << cnt << "\n" ;
return 0;
}