Pagini recente » Cod sursa (job #679406) | Cod sursa (job #704190) | Cod sursa (job #556777) | Cod sursa (job #772363) | Cod sursa (job #1129398)
/*
Keep It Simple!
*/
#include<stdio.h>
int v[20],n,sol;
bool c[20],d1[40],d2[40],nrs;
int valid(int k)
{
for(int i=1;i<k;i++)
if(v[i] == v[k])
return 0;
return 1;
}
void Print(int k)
{
for(int i=0;i<n;i++)
printf("%d ",v[i]+1);
printf("\n");
}
void Back(int k)
{
if( k == n)
{
if(!sol) Print(k);
sol++;
}
else
{
for(int i=0;i<n;i++)
{
if( !c[i] && !d1[i-k+n-1] && !d2[k+i])
{
v[k] = i;
c[i] = d1[i-k+n-1] = d2[k+i] = 1;
Back(k+1);
c[i] = d1[i-k+n-1] = d2[k+i] = 0;
}
}
}
}
int main()
{
freopen("permutari.in","r",stdin);
freopen("permutari.out","w",stdout);
scanf("%d",&n);
Back(0);
printf("%d",sol);
}