问题标签 [backtracking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1370 浏览

algorithm - 在 smlnj 中打开骑士之旅(回溯)算法

我必须编写 SML 代码来解决回溯中的骑士之旅问题。象棋骑士必须跑遍整个棋盘(大小:NxN),并且必须在每个方格中准确访问一次(最后不需要回到第一个方格)。

我已经编写了所有函数来创建一个空棋盘,设置或获取棋盘中的方块,获取可能的骑士下一步动作列表。但是我不知道如何在 SML 中编写递归函数(我知道如何在 C 中编写此算法,但不知道在 SML 中)。

用于 8x8 棋盘的 C 算法

0 投票
2 回答
776 浏览

java - 从一组中找出产生最少浪费的数字

下面将一个集合传递给此方法,并且还传递了一个条的长度。如果从条长度中删除该集合中的某些数字,则该解决方案应输出该集合中的数字,这些数字给出的浪费最少。所以,条长 10,集合包括 6,1,4,所以解决方案是 6 和 4,浪费是 0。我在通过集合回溯的条件方面遇到了一些问题。我还尝试使用浪费的“全局”变量来帮助回溯方面,但无济于事。

SetInt 是一个手工制作的集合实现,它可以添加、删除、检查集合是否为空并返回集合中的最小值。

0 投票
1 回答
1322 浏览

java - 递归回溯的问题

嘿伙计们,最近发布了关于我的算法的问题。

从一组中找出产生最少浪费的数字

我稍微修改了代码,所以它现在在一定程度上回溯了,但是输出仍然有缺陷。我已经调试了这个相当检查所有变量值,但似乎无法找出问题所在。

再次建议而不是彻底的解决方案将有很大帮助。我认为我的代码只有几个问题,但我不知道在哪里。

//来自上一篇文章:

基本上,一个集合被传递给下面的这个方法,并且一个条的长度也被传递。如果从条长度中删除集合中的某些数字,则解决方案应该输出集合中的数字,这些数字给出的浪费最少。所以,条长 10,集合包括 6,1,4,所以解决方案是 6 和 4,浪费是 0。我在通过集合回溯的条件方面遇到了一些问题。我还尝试使用浪费的“全局”变量来帮助回溯方面,但无济于事。

SetInt 是一个手工制作的集合实现,它可以添加、删除、检查集合是否为空并返回集合中的最小值。

0 投票
3 回答
3929 浏览

algorithm - 解决分区问题的递归回溯算法

嘿,我正在寻找一些帮助来找到一种算法,该算法将正数数组划分为 k 部分,以便每个部分具有(大约)相同的总和......假设我们有

1,2,3,4,5,6,7,8,9 en k=3 那么算法应该像这样划分它 1,2,3,4,5|6,7|8,9 的顺序元素不能改变......找到一个贪心算法很容易,但我正在寻找一个回溯版本,它总是返回最佳解决方案......

有人有任何提示吗?

0 投票
2 回答
2091 浏览

recursion - 识别二维数组中的连续重复 [C]

我有一个看起来像这样的二维数组:

我试图找出一种方法来识别最长的连续链 1 跨越或向下。在这种情况下,它从第 4 列第 2 行开始,长度为 4,向下。

我正在考虑使用递归,但在跟踪位置时遇到了一些问题,尤其是在遇到 0 时。

到目前为止,我有一些类似的东西(仅用于检查):

其中G[][]是包含 1 和 0 的二维数组,n是行/列数,i是行号,j是列号。

感谢您提前提供任何帮助!

0 投票
1 回答
1996 浏览

depth-first-search - 伪代码中的回溯深度优先搜索算法

这里为什么Unmark vertex v需要?为什么添加这样的行是安全的,因此 v 再次无法访问,会导致重新访问吗?

0 投票
2 回答
4688 浏览

gdb - gdb 反汇编:以 16 为基数显示函数偏移量

反汇编函数时,gdb将以 16 为基数显示内存地址,但以 10 为基数显示偏移量。

例子:

函数偏移量<+N>在地址旁边,如您所见,它们以 10 为基数。

当 Linux 内核崩溃时,它会显示使用 base 16 的回溯:

必须将回溯地址从 base 16 转换为 base 10 才能找到所需的指令,这非常烦人。

可以告诉gdb以 16 个偏移量显示反汇编输出吗?

0 投票
2 回答
4123 浏览

java - 通过回溯查找求和 n 的所有子集

我想通过回溯找到所有与 n 相加的整数子集

例如对于整数:

n = 7

我想输出

我认为我应该将我正在评估的整数数组中的位置作为参数传递,但我一直在编写其余的逻辑。

到目前为止我的代码:

0 投票
6 回答
12848 浏览

java - 堆栈溢出错误java

我正在尝试解决一个需要递归回溯的问题,而我的解决方案会产生 stackoverflow 错误。我了解此错误通常表示终止条件不好,但我的终止条件似乎正确。除了可能导致 stackoverflow 错误的不良终止条件之外,还有什么其他的吗?我怎样才能找出问题所在?

编辑:抱歉试图发布代码,但它太丑陋了..

0 投票
4 回答
947 浏览

java - 如何在不使用 System.exit(0) 的情况下停止回溯?

我正在使用拉斯维加斯算法在板上生成随机皇后位置,我想通过多次运行对其进行计时,但System.exit(0)如果我不停止,我会在找到解决方案时停止回溯我的算法在那里提供了我不想要的其他解决方案。

这里:

我怎样才能改变它并使算法停止,System.exit(0)这样我就可以在一个循环中多次调用它?