gpt4 book ai didi

Java 数独生成器(最简单的解决方案)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:13 25 4
gpt4 key购买 nike

我在这里看到的最后一个问题:Sudoku - Region testing我问了如何检查 3x3 区域,有人给我一个满意的答案(尽管它涉及很多修补才能让它按照我想要的方式工作,因为他们没有提到类 table_t 是什么。)

我完成了项目并能够创建一个数独生成器,但感觉像是人为设计的。而且我觉得我采用非常蛮力的方法来生成谜题,不知何故使事情过于复杂。

基本上,我的目标是创建一个 9x9 的网格,其中包含 9-3x3 的区域。每行/列/区域只能使用数字 1-9 一次。

我解决这个问题的方法是使用二维数组随机放置数字,一次放置 3 行。完成 3 行后,它将检查 3 行、3 个区域和每个垂直列,直到第 3 个位置。当它遍历它时,它会做同样的事情,直到数组被填满,但由于我用 rand 填充,并多次检查每一行/列/区域,我觉得效率很低。

除了二维数组之外,是否有一种“更简单”的方法来处理任何类型的数据构造?有没有更简单的方法来检查每个 3x3 区域,这可能与更好地检查垂直或水平方向一致?从计算的角度来看,我看不出有多少方法可以在不显着增加代码大小的情况下更有效地做到这一点。

最佳答案

我不久前制作了一个数独游戏,并使用 Donald Knuth 的跳舞链接算法来生成谜题。我发现这些网站对学习和实现算法非常有帮助

http://en.wikipedia.org/wiki/Dancing_Links

http://cgi.cse.unsw.edu.au/~xche635/dlx_sodoku/

http://garethrees.org/2007/06/10/zendoku-generation/

关于Java 数独生成器(最简单的解决方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com