c语言随机生成数独
时间: 2023-08-24 15:21:27 浏览: 204
以下是使用C语言生成数独的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 9
// 检查在第row行第col列插入数字val是否合法
int check(int board[N][N], int row, int col, int val) {
// 检查行和列
for (int i = 0; i < N; i++) {
if (board[row][i] == val || board[i][col] == val) {
return 0;
}
}
// 检查3x3方格
int r = row / 3 * 3;
int c = col / 3 * 3;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[r+i][c+j] == val) {
return 0;
}
}
}
return 1;
}
// 生成数独
void generate(int board[N][N]) {
srand(time(NULL)); // 初始化随机数种子
// 逐个填充数字
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
int val = rand() % 9 + 1; // 随机生成1-9的数字
while (!check(board, i, j, val)) { // 直到找到合法的数字
val = rand() % 9 + 1;
}
board[i][j] = val;
}
}
}
int main() {
int board[N][N] = {0};
generate(board); // 生成数独
// 输出数独
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", board[i][j]);
}
printf("\n");
}
return 0;
}
```
此代码通过随机填充数字,并检查是否合法来生成数独。生成的数独可能不唯一,但都是合法的。
阅读全文