/*
#include <iostream>
#include <vector>
using namespace std;
// 递归函数,用于生成全排列
void permute(vector<int>& nums, size_t start, vector<vector<int>>& result) {
if (start == nums.size() - 1) { //递归终止条件
result.push_back(nums); // 将当前排列加入结果
} else {
for (size_t i = start; i < nums.size(); i++) { //从start位置开始遍历
//核心代码 ===》靠近终止条件 ==》 start+1 代表上一个位置被固定
//那start == nums.size() - 1 代表已经到最终位置了
swap(nums[start], nums[i]); // 交换元素使得每一个元素都在start位置试试
permute(nums, start + 1, result); // 递归生成排列
swap(nums[start], nums[i]); // 恢复原状
}
}
}
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
nums[i] = i + 1; // 初始化数组
}
vector<vector<int>> result; // 存储所有排列
permute(nums, 0, result); // 生成全排列
// 输出所有排列
for (const vector<int>& perm : result) {
for (int num : perm) {
cout << num << " ";
}
cout << endl;
}
for ( size_t i = 0; i < result.size(); i++ ) {
for ( size_t j = 0; j < result[i].size(); j++ ) {
cout << result[i][j] << " ";
}
if(i != result.size() - 1)
cout << endl;
}
return 0;
}
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
nums[i] = i + 1; // 初始化数组
}
// 使用 std::next_permutation 生成所有排列
//next_permutation 的作用是将一个序列(如数组或向量)重新排列,使其成为字典序中的下一个排列。
//如果当前序列已经是字典序中的最大排列(例如 321),那么它会将序列重置为最小排列(例如 123)。
do {
for (int num : nums) {
cout << num << " ";
}
cout << endl;
} while (next_permutation(nums.begin(), nums.end()));
return 0;
}
0 回复
0 转发
0 喜欢
5 阅读



