自己乱写了一些
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NUM 8
void queen(int checkerboard[NUM][NUM],int rank,int row);
int main(void)
{
int checkerboard[NUM][NUM];
memset(checkerboard,1,sizeof(checkerboard));
//第一个棋子摆放的位置
for(int i=0;i<NUM;i++)
{
for(int j=0;j<NUM;j++)
{
queen(checkerboard,i,j);
}
}
}
void queen(int checkerboard[NUM][NUM],int rank,int row)
{
if(checkerboard[rank][row]==1)
{
checkerboard[rank][row]=0;
for(int i=0;i<NUM;i++)
{
checkerboard[i][row]=2;
checkerboard[rank][i]=2;
if(rank-i>0&&row-i>0)
{
checkerboard[rank-i][row-i]=2;
}
else if(rank+i<NUM&&row+i<NUM)
{
checkerboard[rank+i][row+i]=2;
}
else if(rank+i<NUM&&row-i>0)
{
checkerboard[rank+i][row-i]=2;
}
else if(rank-i>0&&row+i<NUM)
{
checkerboard[rank-i][row+i]=2;
}
}
}
else
{
if(rank<NUM&&row<NUM)
{
row++;
queen(checkerboard,rank,row);
}
else if(rank<NUM)
{
row=0;
rank++;
queen(checkerboard,rank,row);
}
else
{
exit(1);
}
}
for(int i=0;i<NUM;i++)
{
for(int j=0;j<NUM;j++)
{
printf("%d",checkerboard[i][j]);
}
putchar('\n');
}
}
|