输出一个数组n个元素的全排列,描述算法基本思想,并给出程序
时间: 2023-04-25 14:01:44 浏览: 97
算法基本思想:
全排列是指将一个集合中的元素进行排列,使得每个元素都出现一次且顺序不同的所有排列方式。对于一个n个元素的数组,可以采用递归的方式进行全排列。
具体实现:
1. 定义一个函数permutation,该函数接收三个参数:数组a,起始位置start,结束位置end。
2. 当start等于end时,说明已经排列完毕,将数组a输出。
3. 循环遍历数组a,将a[start]与a[i]交换位置,然后递归调用permutation函数,将start+1作为起始位置,end作为结束位置。
4. 递归结束后,将a[start]与a[i]交换位置,恢复原来的数组顺序。
程序实现:
```
#include <iostream>
using namespace std;
void permutation(int a[], int start, int end)
{
if (start == end)
{
for (int i = ; i <= end; i++)
cout << a[i] << " ";
cout << endl;
}
else
{
for (int i = start; i <= end; i++)
{
swap(a[start], a[i]);
permutation(a, start + 1, end);
swap(a[start], a[i]);
}
}
}
int main()
{
int n;
cout << "请输入数组元素个数:";
cin >> n;
int a[n];
cout << "请输入数组元素:";
for (int i = ; i < n; i++)
cin >> a[i];
permutation(a, , n - 1);
return ;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)