21xrx.com
2024-09-20 01:10:08 Friday
登录
文章检索 我的文章 写文章
C++代码实现全排列
2023-06-29 22:29:39 深夜i     --     --
C++ 代码 全排列 实现

全排列是指将给定集合中的所有元素不重复地排列出来的所有可能性,它是一种常见的数学问题,在计算机算法中经常需要使用全排列。C++语言作为一种主流的编程语言,提供了可以实现全排列的代码。

在C++中,全排列可以使用递归和回溯的思想来实现。下面是一份C++代码,可以实现1到n的整数的全排列:


#include <iostream> //头文件

#include <vector>

using namespace std;

void permute(vector<int> &nums, vector<vector<int>> &res, int l, int r)

{

  if (l == r) {

    res.push_back(nums);

  } else {

    for (int i = l; i <= r; ++i) {

      swap(nums[l], nums[i]);

      permute(nums, res, l + 1, r);

      swap(nums[l], nums[i]);

    }

  }

}

int main()

{

  int n;

  cout << "请输入整数n:";

  cin >> n;

  vector<int> nums(n, 0);

  for (int i = 0; i < n; ++i) {

    nums[i] = i + 1;

  }

  vector<vector<int>> res;

  permute(nums, res, 0, n - 1);

  for (auto &v : res) {

    for (auto &x : v)

      cout << x << " ";

    

    cout << endl;

  }

  return 0;

}

其中,permute()是实现全排列的主函数,nums是待排列的整数数组,res是用于存储结果的向量,l和r分别表示数组的左右边界。

该函数的实现逻辑是,如果l和r相等,就将数组nums存入res向量,否则循环遍历数组nums,将l位置的数与i位置的数进行交换,并递归调用permute()函数,依此类推。这样,就可以得到nums数组的所有全排列。最终,将结果输出到屏幕上。

在实际使用中,可以根据需要对代码进行修改,实现更加灵活和高效的全排列算法。总之,在C++语言中,实现全排列只需要少量的代码和简单的思路,就能轻松地解决这个问题。

  
  

评论区

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