1221 -- 【回溯練習(xí)】全排列 答案(源代碼見(jiàn)評(píng)論區(qū))
2023-05-28 18:41 作者:李臺(tái)賈高速 | 我要投稿

#include <iostream> #include <vector> ? void generatePermutations(std::vector<int>& nums, std::vector<bool>& used, std::vector<int>& permutation, int n) { if (permutation.size() == n) { // 輸出當(dāng)前的排列 for (int num : permutation) { std::cout << num << " "; } std::cout << std::endl; return; } ? for (int i = 0; i < n; ++i) { if (!used[i]) { used[i] = true; permutation.push_back(nums[i]); ? generatePermutations(nums, used, permutation, n); ? used[i] = false; permutation.pop_back(); } } } ? void generateUniquePermutations(int n) { std::vector<int> nums(n); std::vector<bool> used(n, false); std::vector<int> permutation; ? // 初始化 nums 數(shù)組為 1 到 n for (int i = 0; i < n; ++i) { nums[i] = i + 1; } ? generatePermutations(nums, used, permutation, n); } ? int main() { int n; std::cin >> n; ? generateUniquePermutations(n); ? return 0; }
標(biāo)簽: