21xrx.com
2024-12-22 18:23:11 Sunday
登录
文章检索 我的文章 写文章
C++递归实现全排列的代码
2023-07-12 03:06:39 深夜i     --     --
C++ 递归 全排列 实现 代码

全排列是指将一组数按一定顺序进行排列,得到一个有序的排列结果。例如,对于数列2,它们的全排列就有6种,分别为:2,2,3,3,3,3。实现全排列的算法有很多种,其中递归算法是一种常见的方式。下面是C++递归实现全排列的代码:


#include <iostream>

#include <algorithm>

using namespace std;

void permute(int arr[], int start, int end)

{

  if(start == end)

  {

    for(int i = 0; i <= end; i++)

      cout << arr[i] << " ";

    

    cout << endl;

  }

  else

  {

    for(int i = start; i <= end; i++)

    {

      swap(arr[start], arr[i]);

      permute(arr, start+1, end);

      swap(arr[start], arr[i]);

    }

  }

}

int main()

  int arr[] = 3;

  int n = sizeof(arr)/sizeof(arr[0]);

  permute(arr, 0, n-1);

  return 0;

}

代码中的permute函数使用了递归的思想来实现全排列,其实现过程如下:

1. 当start等于end时,表示数组已经排好序,直接输出数组中的元素。

2. 当start不等于end时,对于从数组下标start到end的每个元素,交换这个元素与start下标的元素的位置,然后递归排列包含这个移动元素后的子数组,最后再交换回来,即保证在进行下一个元素的排列时不会把先前移动过的元素再次移动。

3. 首次调用permute时,start为0,end为n-1,其中n为数组的大小。这可实现了对数组的全排列。

总而言之,C++递归实现全排列的代码可以让人更好地理解全排列的概念和实现思路,特别是递归算法的运用。这段代码可以作为学习者进行参考和学习。

  
  

评论区

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