题目来源
题目描述
题目解析
全排列
按照STL文档的描述,next_permutation函数将按字母表顺序生成给定序列的下一个较大的排列,直到整个序列为降序为止。prev_permutation函数与之相反,是生成给定序列的上一个较小的排列。二者原理相同,仅遍例顺序相反
#include <utility>
#include <vector>
#include <set>
#include <queue>
#include <stack>
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
class Solution{
std::string geneStr(std::vector<std::string> &nums){
std::string str;
for (auto &num : nums) {
str += num;
}
return str;
}
public:
std::vector<std::string> process(std::vector<std::string> &nums){
std::vector<std::string> ans;
std::sort(nums.begin(), nums.end());
do{
ans.push_back(geneStr(nums));
}while (next_permutation(nums.begin(), nums.end())); // 获取下一个全排列
return ans;
}
};
int main(){
int n;
cin >> n;
vector<string> nums(n);
for (int i = 0; i < n; i++)
cin >> nums[i];
Solution a;
auto tmp = a.process(nums);
for (const string& res: tmp)
cout << res << endl;
}