#include <iostream> #include <vector> #include <algorithm> void permute(std::vector<int>& nums, int start, int end, std::vector<std::vector<int>>& result) { if (start == end) { for (int i = 0; i < nums.size(); ++i) { std::cout << nums[i] << (i < nums.size() - 1 ? " " : "\n"); } result.push_back(nums); return; } for (int i = start; i <= end; ++i) { std::swap(nums[start], nums[i]); permute(nums, start + 1, end, result); std::swap(nums[start], nums[i]); // backtrack } } int main() { int n; std::cin >> n; std::vector<int> nums(n); for (int i = 0; i < n; ++i) { nums[i] = i + 1; } std::vector<std::vector<int>> result; // 如果不需要存储结果,可以删除这个变量 permute(nums, 0, n - 1, result); // 如果不需要存储结果,可以删除最后一个参数 return 0; } /************************************************************** Problem: 1308 User: admin Language: C++ Result: Wrong Answer ****************************************************************/