dda*_*cot 3 c++ algorithm
让我们说,一个有8个参与者的课程,我必须以所有可能的方式输出前3个位置.例如:
123 124 125 126 127 128 213等等..
我知道有next_permutation算法,但它返回所有可能的permations与所有数字(从1到8),但我需要前三个地方与所有参与者ex:
next_permutation
1 2 3 4 5 6 7 8 1 2 3 4 5 6 8 7
n. *_* m. 5
你所追求的东西不是排列,这就是为什么next_permutation单独不能解决你的问题.
首先,您需要决定是否123相同321.如果它们相同,则可以使用简单的组合.如果它们不同,则具有k-排列(与普通排列不同).
123
321
std::next_permutation给你下一个排列,而不是下一个k排列.没有std::next_combination.
std::next_permutation
std::next_combination
幸运的是,如果您自己编写next_combination(或在互联网上找到一个),您可以std::next_permutation一起使用它来轻松表达next_k_permutation算法.
next_combination
next_k_permutation
有了正确的术语,应该很容易找到解决方案.
归档时间:
13 年,8 月 前
查看次数:
1236 次
最近记录: