![]() |
1
2
这是一种生成完整电路板的方法。
它始于一系列可能性和董事会。它找到所有选项最少的单元格,并随机选择一个。然后,它填充该单元格,并从与该单元格相关的行、列和块的所有可能性中删除该数字。 它只是重复了81次。
唯一的戏剧性是,它确实在某些时候失败了,但它的成功往往足以在例外情况下重复整个过程。这个
以下是一个有效网格的输出示例:
生成网格只需要不到半秒的时间。 |
![]() |
2
1
主要问题显然不是“checkCol”和“checkRow”部分。相反,这是代码所做的
不
检查
一个相对简单易行的解决方法是添加一个检查
我还没有仔细考虑过这是否会发生,但我相信一个潜在的问题是,可能会出现无限循环。如果
没有人
1到9之间的值可以满足特定单元格的要求,即每个值在较大网格的行或列中,或在较小网格内都是重复的。为了避免这种情况的发生,一种方法是使用一个9的数组
最后,正如在
Nguyen Manh Cuong's comment
,你的线
不管怎样,我认为在那里放那行没有任何有效的目的,所以它很可能应该被删除,或者至少被注释掉。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 3 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 3 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 3 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |