草庐IT

javascript - 确定数独是否可在 JavaScript 中求解

这是Pramp的问题。我需要确定数独是否可解(不像LEETcode问题,我只需要查看一个板是否有效)。下面是我的JavaScript代码,使用递归。我遵循Pramp上建议的逻辑,即创建一个辅助函数getCandidates()来查找所有可以进入空白区域的候选数字。然后在实际的sudokuSolve()函数中,找到候选集最少的空白空间,将这些候选输入到空白空间中,然后尝试使用递归求解棋盘。如果可行,则董事会是可以解决的。我的代码每次都返回true,但我找不到问题所在。我研究了互联网上提出的其他类似问题,但大多数问题都是为了找到数独板的确切解决方案或生成数独板。我只需要看看董事会是否可以解

arrays - 无法对二维数组的列进行 slice "cannot use Sudoku[0:9][0] (type [9]int) as type []int in assignment"

我正在使用9x9二维数组的slice制作一个简单的数独游戏。我仍然刚开始使用Golang并且有一些C++经验。我不断收到错误消息“无法将数独[0:9][0](类型[9]int)用作赋值中的类型[]int”。varrow1[]int=数独[0][0:9]该行正确地获取了二维数组第一行的值并将它们放入row1slice中,但是使用varcol1[]int=Sudoku[0:9][0]会导致上面的错误消息。我能做什么?提前致谢!例如,packagemainimport"fmt"funcmain(){varSudoku[9][9]intfmt.Println(Sudoku)varrow1[]i

java - 找不到错误 (StackOverflowError)

我正在编写一个数独解决程序,但我遇到了以下错误:Exceptioninthread"AWT-EventQueue-0"java.lang.StackOverflowErroratjava.util.HashMap.hash(UnknownSource)atjava.util.HashMap.getEntry(UnknownSource)atjava.util.HashMap.get(UnknownSource)atsun.awt.AppContext.get(UnknownSource)atsun.awt.SunToolkit.flushPendingEvents(UnknownSou

php - 查找字符串中只出现一次的字符

我正在用PHP编写算法来解决给定的数独谜题。我用两个类设置了一个有点面向对象的实现:一个Square类用于9x9板上的每个单独的图block,以及一个Sudoku类,它有一个矩阵Square代表棋盘。我使用的算法的实现是一种三层方法。第一步,将只解决最基本的难题(但也是最有效的),是根据板的初始设置填充任何只能取单个值的方block,并相应地调整其余部分的约束Unresolved方block。通常,这个“不断传播”的过程并不能完全解决棋盘,但它确实解决了相当大的block。然后第二层将开始。这将解析每个单元(或9个方block,它们必须全部具有唯一的数字分配,例如一行或一列)以获取每个

java - 二维数组约束 : Sudoku

我正在尝试解决数独作为家庭作业的约束满足问题。我已经为特定行和列中的所有元素构造了不同的约束。我正在尝试为子区域中的元素构造不同的约束,但我遇到了一些麻烦。我当前算法背后的总体思路是将子区域(例如9x9网格的3x3框)中的所有变量添加到列表中,然后置换该列表中的所有值以构造NotEqualConstraints每个变量之间。下面的代码适用于NxN网格的第一个子区域,但我不确定我应该如何更改它以遍历整个网格的其余部分。intincSize=(int)Math.sqrt(svars.length);ArrayListsubBox=newArrayList();for(intind=0;in

java - 构建高效的数独求解器

是的,我知道这不是什么新鲜事,已经有很多问题(它甚至有自己的标签),但我想用Java创建一个数独求解器,只是为了训练自己编写代码这样效率更高。在程序中执行此操作的最简单方法可能是使用大量for循环解析每一列和每一行,收集每个单元格的可能值,然后剔除只有一种可能性的单元格(无论它们是否只包含1数字,或者它们是其行/列中唯一包含此数字的单元格),直到您解决了难题。当然,光是想到这个Action就应该在每个程序员的脑海中竖起一面红旗。我正在寻找的是以最有效的方式解决这个问题的方法(请尽量不要包含太多代码-我想自己弄清楚这部分)。如果可能的话,我想避免使用数学算法-那些太简单了而且100%不是

java - 数独解算器错误

我不知道自己做错了什么,整天盯着这段代码看。这是Java中的“标准”数独解算器,它采用int[][],其中空白处为0。鉴于我只传递了一block有35个孔的板,这应该能够解决绝大多数问题,但只能解决~66%。在其他情况下,还剩下一些(通常是2或4个)空白,无法解决(即,不正确的数字已写入board。)几乎总是,它会是一个9个不见了。我明白这样一个简单的解决方案并不能解决所有的数独问题。我故意给它简单的。importjava.util.ArrayList;importjava.util.List;publicclassSudokuSolver{publicSudokuSolver(){i

java - Sudoku Solver的代码解释

我对以下代码片段有疑问:它是一个数独求解器,通过填充空单元格来解决数独难题。我无法真正理解求解器方法背后的逻辑。为什么它在尝试k=1-9后返回false并在遍历所有单元格后返回true。我的想法是我们递归地进入solver()方法,一旦数独完成,它将返回true作为调用顺序,最后第一个调用的solver()将返回true。我想我必须省略一些发生上述两个“返回”的场景。有人可以向我解释为什么这些“返回”应该存在吗?publicclassSolution{publicstaticvoidmain(String[]args){Solutions=newSolution();char[][]b

java - 数独解法

我的数独解法有问题。该程序是这样工作的;开始时棋盘是空的,用户在棋盘上添加几个数字,然后点击“求解”按钮,程序会尝试求解。除了将相同的数字放在同一行之外,一切正常。因此,如果用户添加1,1,0,0...0。在拼图中,它无法解决它,因为它的两个1彼此相邻,并且将永远继续尝试找到一个sulotion,即使它无法解决谜。但是,如果它们都是0(空),它会立即解决它,就像我将1和2放在左上角一样。如果我只是在其中放入一些随机数,它将检测到它无法解决(或者如果它是一个有效的谜题,它将解决它)我在想这句话,当theNumber==(row,col)等于thenNumber==(row+1,col)时

java - 数独生成器的递归求解

我正在尝试编写一种算法,以使用Java或Javascript创建合法的数独板。两者都不起作用,我不完全确定为什么。本质上,这两个程序中的问题是x或y的增量超过了应有的增量(跳过正方形)。我一辈子都弄不明白这是怎么回事。如果需要,我可以提供完成JS解决方案的HTML。我最好的猜测是它与我如何使用递归创建堆栈有关,但据我所知,它应该有效。在我的旧代码中有一个不正确的for循环,我知道这一点。我粘贴了一个旧版本,现在已修复。java:importjava.util.*;publicclassSudokuGenerator{//credit:cachao//http://stackoverfl