21xrx.com
2025-03-26 07:18:51 Wednesday
文章检索 我的文章 写文章
C++全排列递归算法代码
2023-06-22 15:54:31 深夜i     23     0
C++ 全排列 递归算法 代码 算法实现

C++全排列递归算法是一种非常常用的算法,它可以将给定序列中的所有元素进行全排列,使得序列中的每个元素都可以在不同的位置上出现。

这种算法可以通过递归的方式来实现,具体实现步骤如下:

1.定义一个交换函数swap,在递归函数中用来交换元素的位置。

2.定义一个递归函数permute,它有三个参数,分别为序列的起始位置p、序列的长度n和当前递归到的位置k。

3.当k等于n时,表示已经完成了一次排列,输出当前序列即可。

4.当k小于n时,依次将p到n位置的元素与k位置的元素交换,并递归permute函数,最后再将它们交换回来。

实现代码如下:

#include<iostream>
using namespace std;
void swap(char &a, char &b)
  char temp = a;
  a = b;
  b = temp;
void permute(char *str, int p, int n){
  if(p == n)
    cout << str << endl;
    return;
  
  else{
    for(int i = p; i <= n; i++){
      swap(str[p], str[i]);
      permute(str, p+1, n);
      swap(str[p], str[i]);
    }
  }
}
int main(){
  char str[] = "abc";
  permute(str, 0, 2);
  return 0;
}

在上面的代码中,我们定义了一个字符串"abc",并将它传递给permute函数。在函数中,我们将首尾两个位置的元素进行交换,并将中间的元素进行全排列,最后再交换回来,形成新的排列。

通过上述算法和代码,我们可以非常方便地对任意给定的序列进行全排列。

  
  

评论区