Pagini recente » Cod sursa (job #2688828) | Cod sursa (job #148222) | Cod sursa (job #2161287) | Cod sursa (job #3158635) | Cod sursa (job #2565427)
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n,nr,ok,v[20],f[20];
int modul(int x)
{
if (x < 0)
return -x;
return x;
}
int verif(int pas)
{
int ok1 = 0;
for (int i=pas-1; i>=1; i--)
if (pas-i == modul(v[i]-v[pas]))
{
ok1 = 1;
break;
}
if (ok1 == 1)
return 0;
return 1;
}
void back(int nivel)
{
if (nivel == n+1)
{
if (ok == 0)
{
for (int i=1; i<=n; i++)
fout << v[i] << " ";
fout << "\n";
nr++; ok = 1;
}
else
nr++;
}
for (int i=1; i<=n; i++)
{
v[nivel] = i;
if (f[i] == 0 && verif(nivel))
{
f[i] = 1;
back(nivel+1);
f[i] = 0;
}
}
}
int main()
{
fin >> n;
back(1);
fout << nr;
return 0;
}