#include<stdio.h>
#include<math.h>
#define LEN 20
long num=0;
int check(int col[LEN],int n,int m,int i)
{
int j;
int flag=1;
if(col[i]!=0)
flag=0;
else
{
for(j=0;j<n;j++)
{
if(col[j]!=0&&j!=i)
{
if((n+1-m)-col[j]==abs(i-j))
flag=0;
}
}
}
return flag;
}
void daying(int col[LEN],int n)
{
int i,j;
num++;
for(i=1;i<=n;i++)
{
for(j=0;j<n;j++)
{
if(col[j]==i)
{
printf("○");
}
else
{
printf("●");
}
}
printf("\n");
}
printf("\n");
}
void fuzhi(int col[LEN],int n,int m,int flag)
{
int i;
if(flag==0)
return;
else
{
if(m==0)
{
daying(col,n);
//if(flag==1)
//num++;
return;
}
for(i=0;i<n;i++)
{
flag=check(col,n,m,i);
if(flag==1)
{
col[i]=n+1-m;
fuzhi(col,n,m-1,flag);
col[i]=0;
}
}
}
}
int main( )
{
int flag=1;
int col[LEN];
int i,n,m; //n
printf("n=");
scanf("%d",&n);
m=n;
for(i=0;i<n;i++)
{
col[i]=0;
}
fuzhi(col,n,m,flag);
printf("%d\n",num);
return 0;
}
#include<math.h>
#define LEN 20
long num=0;
int check(int col[LEN],int n,int m,int i)
{
int j;
int flag=1;
if(col[i]!=0)
flag=0;
else
{
for(j=0;j<n;j++)
{
if(col[j]!=0&&j!=i)
{
if((n+1-m)-col[j]==abs(i-j))
flag=0;
}
}
}
return flag;
}
void daying(int col[LEN],int n)
{
int i,j;
num++;
for(i=1;i<=n;i++)
{
for(j=0;j<n;j++)
{
if(col[j]==i)
{
printf("○");
}
else
{
printf("●");
}
}
printf("\n");
}
printf("\n");
}
void fuzhi(int col[LEN],int n,int m,int flag)
{
int i;
if(flag==0)
return;
else
{
if(m==0)
{
daying(col,n);
//if(flag==1)
//num++;
return;
}
for(i=0;i<n;i++)
{
flag=check(col,n,m,i);
if(flag==1)
{
col[i]=n+1-m;
fuzhi(col,n,m-1,flag);
col[i]=0;
}
}
}
}
int main( )
{
int flag=1;
int col[LEN];
int i,n,m; //n
printf("n=");
scanf("%d",&n);
m=n;
for(i=0;i<n;i++)
{
col[i]=0;
}
fuzhi(col,n,m,flag);
printf("%d\n",num);
return 0;
}