![]() |
1
2
这是一种生成完整电路板的方法。
它始于一系列可能性和董事会。它找到所有选项最少的单元格,并随机选择一个。然后,它填充该单元格,并从与该单元格相关的行、列和块的所有可能性中删除该数字。 它只是重复了81次。
唯一的戏剧性是,它确实在某些时候失败了,但它的成功往往足以在例外情况下重复整个过程。这个
以下是一个有效网格的输出示例:
生成网格只需要不到半秒的时间。 |
![]() |
2
1
主要问题显然不是“checkCol”和“checkRow”部分。相反,这是代码所做的
不
检查
一个相对简单易行的解决方法是添加一个检查
我还没有仔细考虑过这是否会发生,但我相信一个潜在的问题是,可能会出现无限循环。如果
没有人
1到9之间的值可以满足特定单元格的要求,即每个值在较大网格的行或列中,或在较小网格内都是重复的。为了避免这种情况的发生,一种方法是使用一个9的数组
最后,正如在
Nguyen Manh Cuong's comment
,你的线
不管怎样,我认为在那里放那行没有任何有效的目的,所以它很可能应该被删除,或者至少被注释掉。 |
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 6 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 6 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 10 月前 |
![]() |
Paul C · 在维基百科上,将二叉搜索树转换为排序链表的算法是否存在错误? 11 月前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 11 月前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 11 月前 |