Pagini recente » infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #2128067) | Cod sursa (job #3251583) | Cod sursa (job #1861811) | Cod sursa (job #1129822)
#include <cstdio>
#include <cmath>
using namespace std;
int n;
int v[100],sol[100];
int rez;
int da=0;
void init()
{
for(int i=1;i<=40;i++) sol[i]=100;
}
int afis()
{
rez++;
if(da==0)
{
da=1;
for(int i=1;i<=n;i++) sol[i]=v[i];
}
}
int analiza(int k)
{
for(int i=1;i<k;i++)
{
if(v[i]==v[k] || abs(k-i)==abs(v[k]-v[i])) return 0;
}
return 1;
}
void gen(int k)
{
if(k==n+1) afis();
else
{
for(int i=1;i<=n;i++)
{
v[k]=i;
if(analiza(k)) gen(k+1);
}
}
}
int main()
{freopen("damesah.in","r",stdin);
freopen("damesah.out","w",stdout);
scanf("%d",&n);
gen(1);
for(int i=1;i<=n;i++) printf("%d ",sol[i]);
printf("\n%d",rez);
return 0;
}