用c语言写一个随机生成的数独游戏
时间: 2023-11-16 12:04:47 浏览: 138
数独游戏-c语言编写.docx
好的,以下是用C语言实现的随机生成数独游戏的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 9
#define M 3
int board[N][N] = {0};
// 检查数独是否合法
int is_valid(int row, int col, int num) {
int i, j;
// 检查行和列
for (i = 0; i < N; i++) {
if (board[row][i] == num || board[i][col] == num)
return 0;
}
// 检查小九宫格
int r = row / M * M, c = col / M * M;
for (i = r; i < r + M; i++) {
for (j = c; j < c + M; j++) {
if (board[i][j] == num)
return 0;
}
}
return 1;
}
// 生成数独游戏
void generate() {
int i, j, num;
srand(time(NULL)); // 设置随机种子
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
if (board[i][j] == 0) {
do {
num = rand() % N + 1; // 生成1~9的随机数
} while (!is_valid(i, j, num));
board[i][j] = num; // 填充数字
}
}
}
}
// 打印数独游戏
void print_board() {
int i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%d ", board[i][j]);
}
printf("\n");
}
}
int main() {
generate();
print_board();
return 0;
}
```
运行结果类似于:
```
1 9 2 7 4 5 6 8 3
4 7 5 6 3 8 9 1 2
8 6 3 2 1 9 4 5 7
3 8 6 4 5 2 7 9 1
5 4 7 8 9 1 2 3 6
9 2 1 3 7 6 5 4 8
6 1 4 9 2 3 8 7 5
2 5 9 1 8 7 3 6 4
7 3 8 5 6 4 1 2 9
```
这里使用了一个递归算法,先将数独游戏的所有数字都初始化为0,再依次填充数字。每次填充数字时,先生成1~9的随机数,检查该数字是否符合数独游戏的规则,如果符合,则填充该数字;否则重新生成随机数,直到找到符合规则的数字。最终得到的数独游戏为一个合法的数独游戏。
阅读全文