#include "SudokuMatrix.h" #include /** * @brief 交换两个整数的值 * * @param a 一个整数的地址 * @param b 另一个整数的地址 */ void Swap(int*a, int *b){ int temp = *a; *a = *b; *b = temp; } /** * @brief 将一个 int 数组的内容随机打乱 * * @param array 需要打乱的数组 * @param length 数组的长度 */ void Shuffle(int* array, int length){ if (length != 0){ for (int i = length - 1; i > 0; i--) { int j = rand() % (i + 1); Swap(&array[i], &array[j]); } } } void RandomMatrix(SudokuMatrix* matrix){ int random_row[9] = {1,2,3,4,5,6,7,8,9}; int random_place[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; // 重置矩阵内容为全0 for (int i=0;i<9;i++){ for (int j=0;j<9;j++){ matrix->matrix[i][j] = 0; } } for (int i=0;i<3;i++){ // 先生成这九个数的顺序,再随机生成这九个数应该在哪里。 Shuffle(random_row,9); for (int j=0;j<3;j++){ Shuffle(random_place,9); for (int k=0;k<3;k++){ matrix->matrix[i*3+j][random_place[k]] = random_row[j*3+k]; } } } }