Pagini recente » Cod sursa (job #3126263) | Cod sursa (job #2053526) | Cod sursa (job #1567536) | Cod sursa (job #2476561) | Cod sursa (job #1595762)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("damesah.in");
ofstream out("damesah.out");
int v[40], N, c, fr1[40], fr2[40], fr3[40];
int verif (int i)
{
if (fr1[v[i]] > 1) return 0;
if (fr2[i+v[i]] > 1) return 0;
if (fr3[i-v[i]+20] > 1) return 0;
return 1;
}
void back (int i)
{
if (i > N)
{
if(c==0)
{
for(int k=1; k<i-1; k++) out<<v[k]<<' ';
out<<v[i-1]<<'\n';
}
c++;
}
else
{
for (v[i] = 1; v[i] <= N; v[i]++)
{
fr1[v[i]]++;
fr2[i+v[i]]++;
fr3[i-v[i]+20]++;
if (verif(i))
back(i+1);
fr1[v[i]]--;
fr2[i+v[i]]--;
fr3[i-v[i]+20]--;
}
}
}
int main()
{
in >> N;
back(1);
out << c;
return 0;
}