八皇后问题
2007-10-24 11:09
330 查看
#include "stdafx.h"
#include <stdio.h>
int q[20];
int count=0;
int cc = 0;
void print(int n)
{
int i;
count++;
for(i=1;i<=n;i++)
{
printf("(%d,%d)",i,q[i]);
}
printf("/n");
}
int Place(int i,int k)
{
int j = 1;
while(j<k)
{
if((q[j]==i) || abs(q[j]-i)== abs(j-k))
return 0;
j++;
}
return 1;
}
void Queens(int k,int n)
{
int i;
if(k>n)
print(n);
else
{
for(i=1;i<=n;i++)
if(Place(i,k)==1)
{
q[k]=i;
Queens(k+1,n);
}
}
}
int main()
{
int n;
scanf("%d",&n);
Queens(1,n);
printf("/n%d",cc);
return 0;
}
#include <stdio.h>
int q[20];
int count=0;
int cc = 0;
void print(int n)
{
int i;
count++;
for(i=1;i<=n;i++)
{
printf("(%d,%d)",i,q[i]);
}
printf("/n");
}
int Place(int i,int k)
{
int j = 1;
while(j<k)
{
if((q[j]==i) || abs(q[j]-i)== abs(j-k))
return 0;
j++;
}
return 1;
}
void Queens(int k,int n)
{
int i;
if(k>n)
print(n);
else
{
for(i=1;i<=n;i++)
if(Place(i,k)==1)
{
q[k]=i;
Queens(k+1,n);
}
}
}
int main()
{
int n;
scanf("%d",&n);
Queens(1,n);
printf("/n%d",cc);
return 0;
}