21xrx.com
2024-12-22 22:24:48 Sunday
登录
文章检索 我的文章 写文章
C++全排列递归算法代码
2023-06-22 15:54:31 深夜i     --     --
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函数。在函数中,我们将首尾两个位置的元素进行交换,并将中间的元素进行全排列,最后再交换回来,形成新的排列。

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

  
  

评论区

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