力扣36.有效的数独
发布日期:2021-05-15 01:04:55 浏览次数:24 分类:精选文章

本文共 752 字,大约阅读时间需要 2 分钟。

题目:

一幅9x9的网格组成的数独谜题,要求使用数字1到9填充每个空格,且在每行、每列及每个九宫格中,数字均不重复。

思路:

建立一个二维数组遍历整个数独网格。对于每一个空格,检查其所在的行、列和九宫格是否已经包含该数字。一旦发现重复,则该数独无效,否则继续填充。这种方法通过记录每行每列每个九宫格的数字构建了三重检查机制,确保数独的完整性和有效性。

代码实现:

以下是用C语言实现的数独校验函数:

[code]bool isValidSudoku(char** board, int boardSize, int* boardColSize) {int x[9][9] = {0}, y[9][9] = {0}, s[3][3][9] = {0};

int i, j, num, sx, sy;for (i = 0; i < 9; i++) {for (j = 0; j < 9; j++) {if (board[i][j] == '.') continue;sx = i / 3, sy = j / 3;num = board[i][j] - '1';if (x[i][num] == 1 || y[j][num] == 1 || s[sx][sy][num] == 1) {return false;}x[i][num] = 1;y[j][num] = 2;s[sx][sy][num] = 1;}}return true;}[/code]

这个函数通过三维数组x、y和s记录每行、每列以及每个九宫格的数字使用情况。遍历整个数独网格,对于每一个空格,检查它是否已经在其所在的行、列或九宫格中出现。若发现重复,立即返回false,否则填充对应的标记,继续检查下一个空格。最后返回true表示数独有效。

上一篇:PTA【C语言】打印菱形图案
下一篇:力扣783.二叉搜索树节点最小距离

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年05月05日 05时47分27秒