7得票1回答
数独解题方法

我有一个数独解题方法的问题。程序的运行方式是这样的:当程序开始时,棋盘是空的,用户向棋盘中添加一些数字,然后通过点击“解决”按钮,程序会尝试解决它。除了将相同的数字放在同一行之外,一切都运作良好。因此,如果用户添加1,1,0,0 ... 0,那么在谜题中它就无法解决,因为它有两个相邻的1,并且...

7得票3回答
如何防止Prolog无限制地检查不可能的解决方案?

假设以下程序: nat(0). nat(s(N)) :- nat(N). /* 0+b=b */ plus(0,B,B) :- nat(B). /* (a+1)+b = c iff a+(b+1)=c */ plus(s(A),B,C) :- plus(A,s(B),C). 它非常适用...

7得票3回答
正则表达式"(aa)+\1"如何匹配"aaaaaa"?

有人能解释一下正则表达式引擎如何匹配(aa)+\1与aaaaaa的过程吗?我知道当你使用+或*时会有一个称为回溯的过程,但我不确定在这个例子中它是如何工作的。

7得票3回答
用递归回溯算法解决分区问题

嗨,我正在寻找一种算法,将一组正数分成k个部分,以便每个部分具有(大约)相同的总和...假设我们有 1,2,3,4,5,6,7,8,9,k = 3,则应该将算法分区如下1,2,3,4,5 | 6,7 | 8,9 元素的顺序不能改变...找到贪心算法很容易,但我正在寻找一种回溯版本,它始终返回...

7得票3回答
如何在Scala中停止回溯?

假设我正在使用回溯法解决一个问题(例如N皇后),如果我只想找到唯一的解决方案(第一个),而不是所有的解决方案,我该怎么办? 我猜可以采用命令式方式(例如使用可变的布尔标志)。我想知道如何以函数式方式实现。

7得票6回答
递归解法求解数独生成器

我正在尝试编写一个算法,用Java或Javascript创建合法的数独棋盘。但是两种程序都无法正常工作,我不确定原因。 实际上,在这两个程序中的问题是x或y被增加的次数比应该增加的多(跳过了方格)。我无法想象这是如何发生的。如果需要,我可以提供完整的JS解决方案所需的HTML。 我最好的猜...