📄 eightqueens.cpp
字号:
#include <stdio.h >
#include <conio.h >
#include <math.h >
#define QUEENS_NUM 8
int count=0;
int site[QUEENS_NUM];
/*
* 输出一个解,即一种没有冲突的放置方案
*/
void output(){
int i;
printf("No.%-5d ",++count);
for(i=0;i<QUEENS_NUM;i++)
printf("%d ", site[i]);
printf("\n ");
}
/*
* 判断第n个皇后放上去之后,是否合法,即是否无冲突
*/
int isValid(int n){
int i;
for(i=0;i<n;i++){
if(site[i]==site[n])
return 0;
if(abs(site[i]-site[n])==(n-i))
return 0;
}
return 1;
}
/*
* 递归放置第n个皇后,程序的核心
*/
void queen(int n){
int i;
if(n==QUEENS_NUM){
output();
return;
}
for(i=1;i<=QUEENS_NUM;i++){
site[n]=i;
if(isValid(n))
queen(n+1);
}
}
/*
* 主函数
*/
void main(){
queen(0);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -