|
发表于 2021-8-5 15:14:56
|
显示全部楼层
自己乱写了一些
- #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');
- }
- }
复制代码 |
|