From c94f3285b8129b5e030c47021f6b7f83f4804d64 Mon Sep 17 00:00:00 2001 From: p29u84ff3 <192502512@qq.com> Date: Sun, 29 Oct 2023 12:09:49 +0800 Subject: [PATCH] ADD file via upload --- sudoku2.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 sudoku2.c diff --git a/sudoku2.c b/sudoku2.c new file mode 100644 index 0000000..b890250 --- /dev/null +++ b/sudoku2.c @@ -0,0 +1,59 @@ +/*-------------------*/ +/*实验:数独矩阵------*/ +/*2.随机生成一个 9×9 的不完整的矩阵;*/ +/*-------------------*/ +#include +#include +#include +void randseedInit(){ + srand(time(NULL)); +} +void makeNSeq(int _seq[],int n){//产生1-n的不重复序列(传入一个数组名指针) + int ct[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; + for (int i = 0; i < n; i++) { + int t = rand() % n; + while(ct[t=rand() % n]); + ct[t]++; + _seq[i] = t+1; + } +} +void initBoard(int _board[9][9]){ + for (int i = 0; i < 9;i++) + for (int j = 0; j < 9;j++) + _board[i][j] = 0; +} +void makeRandomBoard(int _board[9][9]){ + initBoard(_board); + for (int i_1 = 0; i_1 < 3;i_1++){ + int seq[9]; + makeNSeq(seq, 9); + for (int i = 0; i < 3;i++){ + int where[9]; + makeNSeq(where, 9); + for (int idx = 0; idx < 3;idx++){ + _board[i_1 * 3 + i][where[idx+i*3]-1] = seq[idx+i*3]; + } + } + } +} +void printBoad(int _board[9][9]){ + for (int i = 0; i < 9;i++){ + if(!(i%3))printf("|-----------------------|\n"); + for (int j = 0; j < 9;j++){ + if(!(j%3)) + printf("| "); + if(_board[i][j]==0) + printf(". "); + else + printf("%d ", _board[i][j]); + } + printf("|\n"); + } + printf("|-----------------------|\n"); +} +int main(){ + randseedInit(); + int board[9][9]; + makeRandomBoard(board); + printBoad(board); +} \ No newline at end of file