子集的排列和随后的运行时分析

时间:2011-01-05 12:08:59

标签: java algorithm permutation combinations

我有两个问题:

  1. 我想生成子集的排列,例如有20种可能的氨基酸和5种可能发生的位置。可能发生的总排列(文本中)

  2. 一旦我有了这个排列列表,每个人都会得到某些值,我想在运行时查找任何给定的排列。想到的第一个想法是一个查找表,但我想知道是否有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:5)

  1. 您需要长度为5的组合,而不是排列组合。这是一个标准问题,可以通过递归来解决。如果您不想自己编写,请使用CombinationGenerator

  2. 使用基数20对组合进行编号(不要与碱的化学定义混淆)。如果您要为有限的组合子集存储数据,请使用哈希表;如果您将大部分组合,则使用查找数组。