我正在处理一个问题,这个问题需要一个子程序来回答这个问题。我知道如何使用位操作从数组中生成所有子序列,但难以生成偶数长度的子序列。
例如,假设有一个数组A = [2, 5, 4, 2, 3, 1]
我要所有等长的子序列,即长度2,4和6。
编辑1:1

最佳答案

因为您已经知道如何生成所有子序列,所以只需删除最后一个元素并生成剩余数组的所有子序列,但将最后一个元素以奇数长度追加回每个子序列。
很容易证明这会生成所有的等长子序列:
不以a的最后一个元素结尾的a的每一个偶数长度的子序列是较早元素的偶数长度的子序列。
a的每一个偶数长度的子序列都以a的最后一个元素结尾,该元素前面有前面元素的奇数长度的子序列。

关于arrays - 如何从数组生成偶数长度的所有子序列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53177298/

10-11 05:07