/*全排列问题C++代码
输入:全排列元素数量 n
n个需要排列的字符
输出:该n个字符的全排列序列
*/
#include <iostream>
using namespace std;
void swap(int &a, int &b) { //交换
int temp = a;
a = b;
b = temp;
}
void perm(char list[], int low, int high) { //递归函数
if (low == high) { //当执行完一趟递归排列便输出排列结果
for (int i = 0; i <= low; i++)
cout << list[i];
cout << endl;
}
else {
for (int i = low; i <= high; i++) {
swap(list[i], list[low]); //把第low个元素和第i个元素交换
perm(list, low + 1, high); //对子序列list[low+1]~list[high]执行递归排列操作
swap(list[i], list[low]); //将之前交换的两个元素换回来
}
}
}
int main()
{
int n;
char list[100] ;
cout << "Number of elements for Full Permutation: ";
cin >> n; //输入排列字符的数量
cout << "\nInput: ";
for (int i = 0; i < n; i++)
cin >> list[i]; //输入n个需要排列的字符
cout << "\nOutput:" << endl;
perm(list, 0, n-1);
cout << endl;
return 0;
}
n个字符全排列
最新推荐文章于 2021-08-16 18:27:58 发布