Pagini recente » Cod sursa (job #1760256) | Cod sursa (job #2801997) | Cod sursa (job #1247435) | Cod sursa (job #1519404) | Cod sursa (job #1998699)
#include <iostream>
#include <fstream>
#define nmax 15
using namespace std;
ifstream fin("regine.in");
ofstream fout("regine.out");
int x[nmax],n; ///back
bool viz[nmax];
int nr; ///nr sol
void Write()
{int i;
for(i=1;i<=n;i++)
fout<<x[i]<<" ";
fout<<endl;
}
inline int mod(int x)
{if(x<0) return -x;
return x;}
bool Valid(int k)
{int i;
for(i=1;i<k;i++)
if(k-i==mod(x[k]-x[i])) return 0;
return 1;
}
void Back(int k)
{int i;
for(i=1;i<=n;i++)
if(viz[i]==0)
{x[k]=i; viz[i]=1;
if(Valid(k))
if(k==n)
{nr++;
if(nr==1) Write();
}
else Back(k+1);
viz[i]=0;
}
}
int main()
{fin>>n;
Back(1);
fout<<nr<<endl;
return 0;
}