【发布时间】:2013-04-12 21:51:15
【问题描述】:
所以我已经阅读了可以生成字典排列的算法。 如:1-2-3-4-5->1-2-3-5-4->1-2-4-3-5->...->5-4-3-2-1
但是我想强加一些布尔条件,我跳过一些排列。
假设我有: 1-2-3-4-5 1-2-3-5-4 . . . 我想跳过所有其他 1-2-X-X-X 然后转到 1-3-2-4-5
交换 2 和 3 并对剩余的三个数字进行排序是最好的方法吗? 还是有其他更快的方法?
【问题讨论】:
-
你想使用什么类型的布尔条件?您提出的建议如下所示:如果已经生成 (1,2,3,4,5) 和 (1,2,3,5,4),那么如果当前生成的排列的开头是 (1,2),则跳过。描述您要使用的布尔条件。
-
所以对于数字 1,2,3,4,5 我有 5 个!排列。对于前面有 1-2 的排列,我有 3 个!该类型的排列。我想施加一个布尔条件,这样当前两个数字加起来为 3 时,我会跳过 1-2-X-X-X 类型的所有其他排列并转到 1-3-2-4-5。
标签: c++ algorithm permutation