用c++写出下面程序:输出一个数组n个元素的全排列
时间: 2024-11-09 22:29:14 浏览: 22
有一个一维数组内放个学生成绩求平均成绩。-c++面向对象程序设计
在 C++ 中,要编写一个程序来输出一个整数数组 n 个元素的所有全排列,你可以使用递归的方式来实现。这里是一个简单的示例,我们将创建一个名为 `permute` 的函数,它接受一个数组、起始索引和结束索引作为参数:
```cpp
#include <iostream>
using namespace std;
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
void permute(int arr[], int l, int r) {
if (l == r)
return;
// 遍历数组从左到右
for (int i = l; i <= r; i++) {
// 交换当前元素和第一个未访问的元素
swap(&arr[l], &arr[i]);
// 对剩余未排序的部分递归调用 permute 函数
permute(arr, l + 1, r);
// 回溯,将已交换的元素恢复原位
swap(&arr[l], &arr[i]);
}
}
// 主函数,用于测试
int main() {
int n;
cout << "Enter the number of elements in the array: ";
cin >> n;
int arr[n];
cout << "Enter the elements of the array: ";
for (int i = 0; i < n; i++)
cin >> arr[i];
cout << "All permutations of the array: \n";
permute(arr, 0, n - 1);
return 0;
}
```
在这个程序中,用户首先输入数组的大小和元素,然后调用 `permute` 函数生成并打印所有的排列。
阅读全文