输出N个数的有重复全排列 Input 一个整数N 1<=N<=5 Output 输出n个数的有重复全排列C++
时间: 2023-10-08 14:06:51 浏览: 102
以下是基于递归实现的C++代码,用于输出N个数的有重复全排列:
```c++
#include <iostream>
using namespace std;
// 递归函数,参数为当前已经排列好的数组、数组长度和当前处理的位置
void permutation(int arr[], int len, int pos) {
// 如果已经排列到了最后一个位置,输出当前数组并返回
if (pos == len - 1) {
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
return;
}
// 对于当前位置,枚举所有可能的数进行排列
for (int i = pos; i < len; i++) {
// 将当前位置与i所在位置的数交换
swap(arr[pos], arr[i]);
// 递归处理下一个位置
permutation(arr, len, pos + 1);
// 恢复数组,以便进行下一次排列
swap(arr[pos], arr[i]);
}
}
int main() {
int N;
cin >> N;
// 初始化数组为1~N
int arr[N];
for (int i = 0; i < N; i++) {
arr[i] = i + 1;
}
// 调用递归函数进行排列
permutation(arr, N, 0);
return 0;
}
```
例如,当N=3时,输出的全排列为:
```
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2
```
阅读全文