八皇后问题c 代码
时间: 2024-06-17 18:03:56 浏览: 15
八皇后问题是一个经典的回溯算法问题,其目标是在8*8的棋盘上放置8个皇后,使得每个皇后都不会互相攻击,即任意两个皇后不在同一行、同一列或同一斜线上。
下面是 C 语言的八皇后问题代码:
```
#include <stdio.h>
#include <stdlib.h>
#define N 8
int chessboard[N][N];
void printChessboard() {
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
printf("%d ", chessboard[i][j]);
}
printf("\n");
}
}
int isConflict(int row, int col) {
for(int i=0; i<row; i++) {
if(chessboard[i][col] == 1) { // check column
return 1;
}
if(col-row+i >= 0 && chessboard[i][col-row+i] == 1) { // check diagonal
return 1;
}
if(col+row-i < N && chessboard[i][col+row-i] == 1) { // check diagonal
return 1;
}
}
return 0;
}
int solve(int row) {
if(row >= N) {
return 1;
}
for(int col=0; col<N; col++) {
if(!isConflict(row, col)) {
chessboard[row][col] = 1;
if(solve(row+1)) {
return 1;
}
chessboard[row][col] = 0;
}
}
return 0;
}
int main() {
if(solve(0)) {
printChessboard();
} else {
printf("No solution exists.");
}
return 0;
}
```
程序中的 `chessboard` 数组表示棋盘,元素为 1 表示该位置有皇后,为 0 表示没有。`isConflict` 函数用于判断在当前位置放置皇后是否冲突,如果冲突则返回 1,否则返回 0。`solve` 函数采用递归回溯的方式求解八皇后问题。 `main` 函数调用 `solve` 函数求解问题,并打印结果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)