题意: 在8*8国际象棋棋盘上,要求在每一行放置一个皇后,且能做到在竖方向,斜方向都没有冲突。国际象棋的棋盘如下图所示:
代码:
#include<stdio.h>
#define N 100
int c[N],n;
void search(int cur)
{
int i,j,flag;
if(cur==n)
{
for(j=0;j<n;j++)
printf("%d ",c[j]);
printf("\n");
return;
}
for(i=0;i<n;i++)
{
c[cur]=i;
flag=1;
for(j=0;j<cur;j++)//判断有没有和其他的皇后产生冲突,因为每个皇后是按行排列的,所以只需要判断列和对角线即可
if(c[j]==c[cur]||j-c[j]==cur-c[cur]||j+c[j]==cur+c[cur]) {
flag=0;
break;//一旦发现有冲突就退出,放弃刚才试探的位置
}
if(flag==1)
search(cur+1);
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
search(0);
system("pause");
return 0;
}