我正在处理一个问题,该问题需要将其作为子程序来回答。我知道如何使用位操作从数组生成所有子序列,但很难生成偶数长度的子序列。
为了举例,假设有一个数组A = [2, 5, 4, 2, 3, 1]
我想要所有偶数长度的子序列,即长度为 2、4 和 6 的子序列。
编辑 1:1<=N<=1000,其中 N 是数组的大小。
最佳答案
既然您已经知道如何生成所有子序列,那么只需删除最后一个元素并生成剩余数组的所有子序列,但将最后一个元素追加到每个子序列中,长度为奇数。
容易证明这会生成所有偶数长度的子序列:
- A 的每个不以 A 的最后一个元素结束的偶数长度子序列是前面元素的偶数长度子序列。
- A 的每个以 A 的最后一个元素结尾的偶数长度子序列,都在该元素之前有一个奇数长度的较早元素的子序列。
关于arrays - 如何从数组中生成所有长度为偶数的子序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53177298/