📄 queen.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
int a[8];//记录每行(0--8)棋子所在的列;
int n=1;//记录解决问题的摆法;
int ok(int r,int l){
int i=0;
for(i=0;i<(r-1);i++){//判断同列是否有棋子
if(a[i]==l)return 0;
}
for(i=1;i<r;i++){
int m=l-r+i;
while((m>0)&&(m<9)){
if(a[i-1]==m)return 0;//判断左对角线是否有棋子
else break;
}
m=l+r-i;
while((m<=8)&&(m>0)){
if(a[i-1]==m)return 0;//判断有对角线是否有棋子
else break;
}
}
return 1;
}
void queen(int r){
if(r>8){
for(int i=0;i<8;i++){
printf("row=%d",i+1);
printf(",line=");
printf("%d",a[i]);
printf("\n");
}
printf("**********************,n=");//输出一种摆法,
printf("%d",n);
n=n+1;
printf("\n");
}
else{
for(int l=1;l<=8;l++){
if(ok(r,l)==1){//判断摆法是否合理;
a[r-1]=l;//记录第r行棋子所在列;
queen(r+1);
}
}
}
}
void main(){
int r=1,n=0;
queen(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -