如何获取所有全排列情况?STL中的代码非常精妙,利用next_permutation的返回值,判断是否全排列结束(否则将死循环)。对于给定的一个数组,打印其所有全排列只需如下:
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; void all_permutation(int arr[], int n)//获得C++的全排列 { sort(arr,arr+n); // sort arr[] in ascending order do{ for(int i=0; i<n; printf("%d ",arr[i++])); printf("\n"); }while(next_permutation(arr,arr+n)); } int main(){ int a[5]={1,2,3}; all_permutation(a,3); }