给定一个整数数组,编写一个程序来打印数组中数字的所有排列。输出应按非递增顺序排序。
例如对于数组{12, 4, 66, 8, 9}
,输出应该是:
9866412
9866124
9846612
....
....
1246689
我想同时生成所有排列,将它们插入到 BST
中,然后对 BST
执行反向排序。
这似乎非常低效,因为我正在存储排列,我们可以做得更好吗?
最佳答案
C++ 标准库:
矢量 arr = ..
排序(arr.begin(),arr.end())
做
{
//在这里处理你的数据
}while(next_permutation(arr.begin(),arr.end());
这在 O(2^n) 中为您做您想做的事。在内部,它通过有效的方式交换来实现。如果您需要进一步的帮助,请告诉我
关于arrays - 包含整数的数组的排列变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425504/