欢迎光临散文网 会员登陆 & 注册

1221 -- 【回溯练习】全排列 答案(源代码见评论区)

2023-05-28 18:41 作者:李台贾高速  | 我要投稿
#include <iostream>
#include <vector>
 
void generatePermutations(std::vector<int>& nums, std::vector<bool>& used, std::vector<int>& permutation, int n) {
    if (permutation.size() == n) {
        // 输出当前的排列
        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 数组为 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;
}



1221 -- 【回溯练习】全排列 答案(源代码见评论区)的评论 (共 条)

分享到微博请遵守国家法律