从一个范围内对象可能的随机排序开始,使用next_permutation单步执行所有较大的排列,然后逐步递减,再次从原始排序开始,使用prev_permutation到达最后一个排序,是否更有效?
或者,在排列之前对范围进行排序,然后只使用next_permutation遍历所有范围?
发布于 2011-07-12 01:04:15
要获得所有排列,请从排序范围开始,然后
do
{
// something
} while(next_permutation(range.begin(), range.end());当再次对range排序时,它会停止。这个过程是O(n!)。
当你开始使用随机化的范围时,你会遗漏一些排列。
发布于 2011-07-11 22:41:54
这完全没有区别,算法不会重用以前的结果,所以不需要事先排序。
https://stackoverflow.com/questions/6651785
复制相似问题