用c语言代码解决n皇后问题
时间: 2023-10-22 16:03:39 浏览: 87
Sure, 解决 N 皇后问题的方法之一是使用回溯算法。下面是使用 C 语言的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 100
int n;
int board[MAX_N];
void print_solution() {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (board[i] == j) {
printf("Q ");
} else {
printf(". ");
}
}
printf("\n");
}
printf("\n");
}
int is_valid(int row, int col) {
int i;
for (i = 0; i < row; i++) {
if (board[i] == col || row - i == abs(col - board[i])) {
return 0;
}
}
return 1;
}
void solve(int row) {
int i;
if (row == n) {
print_solution();
return;
}
for (i = 0; i < n; i++) {
if (is_valid(row, i)) {
board[row] = i;
solve(row + 1);
}
}
}
int main() {
printf("Enter the number of queens: ");
scanf("%d", &n);
solve(0);
return 0;
}
```
该代码使用回溯算法来解决 N 皇后问题。回溯算法是一种通过尝试所有可能的解决方案来解决问题的算法。在 N 皇后问题中,我们尝试在每一行中放置一个皇后,并且确保没有两个皇后在同一行、同一列或同一对角线上。如果找到了正确的解,则将其打印出来并返回。如果没有找到正确的解,则回溯并尝试下一个位置。
阅读全文