例如我有这个数组:
int a[] = new int[]{3,4,6,2,1};
我需要列出所有排列,以使如果一个像这样{3,2,1,4,6},其他的一定不能相同。我知道,如果数组的长度为 n, 那么就有 n! 可能的组合。该算法如何编写?
{3,2,1,4,6}
更新:谢谢,但是我需要一个伪代码算法,例如:
for(int i=0;i<a.length;i++){ // code here }
只是算法。是的,API函数很好,但是对我没有太大帮助。
如果使用的是C ++,则可以std::next_permutation从头<algorithm>文件使用:
std::next_permutation
<algorithm>
int a[] = {3,4,6,2,1}; int size = sizeof(a)/sizeof(a[0]); std::sort(a, a+size); do { // print a's elements } while(std::next_permutation(a, a+size));