首页 > 代码库 > 【C/C++】全排列

【C/C++】全排列

给定正整数n,求1,2,3,...,n的全排列

 

解法一:递归,结果并不为字母序排列。

void Helper(vector<int> v, int low, int high){    if(low == high)    {        for(int i = 0; i < v.size(); i ++)            cout << v[i];        cout << endl;    }    else    {        for(int i = low; i <= high; i ++)        {            swap(v[low], v[i]);            Helper(v, low+1, high);            swap(v[low], v[i]);        }    }}void permutation(int n){    vector<int> v(n,0);    for(int i = 0; i < n; i ++)        v[i] = i+1;    Helper(v, 0, n-1);}

 

解法二:algorithm库中的next_permutation函数,结果按字母序排列

void permutation(int n){    vector<int> v(n,0);    for(int i = 0; i < n; i ++)        v[i] = i+1;    do    {        for(int i = 0; i < v.size(); i ++)            cout << v[i];        cout << endl;    }while(next_permutation(v.begin(),v.end()));}

 

【C/C++】全排列