我正在编写一个程序,从用户处接收 Sudoko 2D 数组,然后检查解决方案是否有效(行/列或正方形中的数字没有重复)。 在官方解决方案中,这是他们用来检查重复项的方法。 但我不明白 numcounter 函数部分,它没有写在代码的任何其他部分。
我尝试理解解决方案,但没有成功。
在每一行、每一列和每个方块中,每个数字(或者在本例中显然是从 1 到 25 的每个数字)都必须恰好出现一次。
numCounter 数组的作用是,它保存 25 个布尔值,每个布尔值代表其索引号(+1,因为索引从 0 开始)是否已经在此行/列/方格中见过。如果已看到,则当前字段保存的是该行(或列或方格)中第二次出现的数字,因此该解决方案“无效”。如果没有,我们要记住,现在,它做到了。因此我们将当前单元格中的数字对应的 numCounter 索引设置为 true。 这会检查每个数字是否最多出现 1 次。由于每行有 25 个单元格和 25 个可能的数字,因此它还会检查它是否至少出现一次。
我没有看到任何错误检查。如果单元格包含低于 1 或高于 25 的数字,则超出范围,但也许会在程序中的另一点进行检查。
希望我有帮助。
-将 25 个单元格定义为 FALSE
-检查每个单元格
--如果单元格为真,则不好
--如果单元格为假,则将其设为真
如果它已经是假的,为什么它会变成真的? 通过这种方式,您可以确保始终一次访问每个单元格。如果在行或列中,如果数字不同,则您访问不同的单元格。这就是逻辑。