Cod sursa(job #1093121)
Utilizator | Data | 27 ianuarie 2014 19:08:54 | |
---|---|---|---|
Problema | Problema Damelor | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.94 kb |
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int N,x[20],Sol,Flag;
int valid(int k)
{
for(int i=1;i<k;i++)
if(x[k]==x[i])
return 0;
for(int i=1;i<k;i++)
if(fabs(x[k]-x[i])==k-i)
return 0;
return 1;
}
void afisare()
{
for(int i=1;i<=N;i++)
fout<<x[i]<<" ";
fout<<"\n";
}
void Back(int k)
{
int i;
for(i=1;i<=N;i++)
{
x[k]=i;
if(valid(k))
if(k==N)
{
if(!Flag)
{
Flag=1;
afisare();
}
Sol++;
}
else
Back(k+1);
}
}
int main()
{
fin>>N;
Back(1);
fout<<Sol<<"\n";
return 0;
}