【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()));
}

 

posted @ 2014-12-10 20:43  陆草纯  阅读(337)  评论(0编辑  收藏  举报