Pagini recente » Cod sursa (job #1176701) | Cod sursa (job #337388) | Cod sursa (job #3219908) | Cod sursa (job #2896715) | Cod sursa (job #1905515)
#include <fstream>
#include <bitset>
#define NMAX 15
//#define abs(a) (a > 0 ? a : -a)
using namespace std;
ifstream f ("damesah.in");
ofstream g ("damesah.out");
int c,i,st[14],k,n;
bitset < NMAX> b(false);
inline int abs(int a)
{
if (a > 0) return a;
return -a;
}
inline int valid (int k)
{
int i;
for (i=1;i<k;i++)
if ( abs(st[k] - st[i]) == k - i) return 0;
return 1;
}
inline void tip ()
{
int i;
for (i=1;i<=n;i++)
g<<st[i]<<' ';
g<<'\n';
}
void Back (int k)
{
for (int i=1;i<=n;i++)
{
if (b[i]) continue;
st[k]=i;
b[i] = 1;
if (valid(k))
{
if (k==n)
{
c++;
if (c==1) tip ();
}
else Back (k+1);
}
b[i] = 0;
}
}
int main()
{
f>>n;
c=0;
Back (1);
g<<c;
return 0;
}