给定正整数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()));
}

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-26
  • 2022-12-23
  • 2022-12-23
  • 2021-07-12
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-11
  • 2022-12-23
  • 2021-07-23
  • 2021-07-31
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案