#include <iostream>
#include <string>
using namespace std;
void Exchange(char &a, char &b) { char c = a; a = b; b = c; }
void Arrange(char* s, int ss) {
for (size_t i = 0; i < ss - 1; i++)
for (size_t j = i + 1; j < ss; j++)
if (s>s[j]) Exchange(s, s[j]);
}
void quanPai(char *s, int ss, int pos) { //依次输入数组,长度,开始位置
if (pos == ss - 1){ cout << s << endl; return; } //如果开始位置已经是最后一个,输出,返回
for (size_t i = pos; i < ss; i++) //将第一个依次与后面的互换
{
Exchange(s[pos], s);
quanPai(s, ss, pos+1);
Exchange(s[pos], s); //每次换位都要基于原本的顺序,所以下一层返回后需要换回来
}
}