【发布时间】:2021-03-29 12:47:12
【问题描述】:
这是我的示例数据结构:
r 代表行。
var data = {
r0: ["E9", "55", "1C"],
r1: ["1C", "E9", "E9"],
r2: ["BD", "1C", "55"]
}
我将如何找到路径不能相同的所有路径,路径只能水平遍历(并且只能从第 0 行开始),然后是垂直,然后是水平等,在它无法选择的路径中相同的值。但是,如果在当前行/列中检测到有效值,则路径可以“跳转”值。
行和列从索引0开始。
未来算法输出的预期路径示例:
RowColumn(value),....
// these paths stop because there are no more valid vertical or horizontal values to pick.
00(E9), 10(1C), 11(E9), 01(55), 02(1C), 22(55), 12(E9)
02(1C), 22(55), 20(BD), 00(E9), 01(55), 21(1C), 11(E9), 10(1C), 12(E9)
【问题讨论】:
-
如果你必须手工完成,你会怎么做?一旦你弄清楚了,你就需要学习把它转换成代码。
-
能否详细说明最终结果?看来您需要的是展平您的
data数组 -
我已经为它做了算法,结果发现没有解决方案:'(如果你必须水平,然后垂直,然后水平等等,没有办法使这项工作在 3x3 网格中。您的预期结果不符合该规则(您连续水平两次:
02, 12, 22) -
看起来我完全掩盖了垂直水平垂直等。部分......我们需要在这里做更多的澄清; @blex 是正确的,因为当您必须 每次移动都交替垂直/水平时,覆盖 3x3 网格中的所有元素是不可能的。感觉可能缺少一些信息。
-
我犯了一个错误,不小心写了 2 个垂直移动(正如 blex 指出的那样)。目标不是覆盖整个 3x3(或更大)的网格,而是从第一行开始找到所有可能的路径。路径可以是任意数量的长度。必须从第一行水平开始(选择任何值),然后选择垂直值(同时不选择任何已经选择的值)。路径可以“跳过”自身,但不能选择相同的值。
标签: javascript arrays path permutation