【发布时间】:2021-10-11 06:20:35
【问题描述】:
我想知道如何从具有如下约束的列表中采样索引:
1111
01234567890123
a = "ABAAABABBBABAB"
b = "ABABBB"
问题是如何找到a的有序采样字符等于b
所以,问题的答案应该如下所示,
[0, 1, 2, 5, 7, 8],
[0, 1, 2, 5, 7, 9],
[0, 1, 2, 5, 7, 11],
...,
[2, 5, 6, 7, 8, 9],
...
因为b 等于a[0] + a[1] + a[2] + a[5] + a[7] + a[8]。
所以[0, 1, 2, 5, 7, 8] 是问题的一个答案。
但是答案的指标应该满足有序的条件。
不能是[2, 1, 3, 5, 7, 8]。
a[2] + a[1] + a[3] + a[5] + a[7] + a[8] 等于b,但不能满足有序状态条件。
a 的长度为 22,b 的长度总是小于a 的长度。
我实施了蛮力解决这个问题,但它需要很大的时间复杂度。
有没有比蛮力更好的算法? 如果有,应该如何实现?
【问题讨论】:
-
请出示您已经编写的代码。那里可能有一个简单的错误
-
可以只生成一个列表,例如
[0, 1, 2, 5, 7, 8],还是需要一种算法来生成所有可能的索引列表以从 a 构建 b? -
@Stef 我需要所有可能的索引列表