21xrx.com
2024-12-22 17:14:07 Sunday
登录
文章检索 我的文章 写文章
C++实现1到n的全排列输出
2023-07-13 05:19:23 深夜i     --     --
C++ 全排列 1到n

在计算机编程领域中,全排列是一种经常被使用的算法。全排列就是将一些数按一定顺序排列起来,它可以通过循环、递归等多种方式来实现。在C++中,我们可以使用递归的方式来实现1到n的全排列输出。

在递归实现算法时,我们需要首先确定递归函数的基础步骤和递归步骤。在这个问题中,递归基础步骤是当我们排列完n个数的时候输出结果。而递归步骤则是将n个数分别放到第1个位置、第2个位置、第3个位置、...第n个位置的过程。

下面我们来看具体实现。首先,定义一个vector作为全局变量,将值存放到vector中。


vector<int> v;

void perm(int n)

{

  if(n == 0)

  {

    for(int i = 0; i < v.size(); i++)

      cout << v[i] << " ";

    cout << endl;

    return ;

  }

  for(int i = 1; i <= n; i++)

  {

    v.push_back(i);

    swap(v[v.size() - 1], v[i - 1]);

    perm(n - 1);

    swap(v[v.size() - 1], v[i - 1]);

    v.pop_back();

  }

}

在以上代码中,我们定义了一个全局变量vector v,用来存放值。其中perm函数是递归函数,也就是我们要实现的全排列算法的函数。首先,我们判断如果n为0,则说明已经排列完毕,我们将排列结果输出即可。如果n不为0,则需要将n个数分别放到第1个位置、第2个位置、第3个位置...第n个位置,分别进行递归,并在递归结束后注意vector v的回溯和排列顺序的恢复。

在以上代码之后,我们就可以调用perm函数,将1到n的全排列输出了。具体实现示例如下:


int main()

{

  int n;

  cin >> n;

  perm(n);

  return 0;

}

输入n的值后,将会输出从1到n的全排列。通过以上的C++实现,我们可以轻松地输出1到n的全排列,对于算法的学习和提高具有很大的意义。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复