码迷,mamicode.com
首页 > 编程语言 > 详细

【C/C++】全排列

时间:2014-12-10 21:05:21      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   sp   for   on   div   log   

给定正整数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++】全排列

标签:style   blog   io   color   sp   for   on   div   log   

原文地址:http://www.cnblogs.com/ganganloveu/p/4156257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!