arrays - 如何从数组中生成所有长度为偶数的子序列?

标签 arrays algorithm data-structures bit-manipulation subsequence

我正在处理一个问题,该问题需要将其作为子程序来回答。我知道如何使用位操作从数组生成所有子序列,但很难生成偶数长度的子序列。

为了举例,假设有一个数组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/

相关文章:

c - C 中函数参数/调用函数的问题

algorithm - 如何找到链表循环中的节点数?

algorithm - 元素搜索成本

algorithm - 动态规划 : find the subset with product of all members is equals to given number

algorithm - 通过对 A 和 B(含)之间的一个或多个整数进行按位或运算,可以生成多少个不同的数字

ruby - 生成数字数字的所有排列

java - 多个 for 循环迭代器的最佳实践

javascript - 在数组中搜索只返回第一个结果

字符串排列秩+数据结构

c - 制作一个初学者 C 程序来根据年龄读取和排序学生