如何优化 n 个数的递归排列函数 k 个元素

How to optimize my recursive permutation function of n numbers by k elements

提问人:ilua 提问时间:11/16/2023 更新时间:11/16/2023 访问量:29

问:

我是编程新手,所以我想知道是否有可能优化我的函数,该函数按字典顺序从 1 到 n 乘以 k 个数字排列。我试着用递归的方式写它:

#include <vector>
#include <iostream>

using namespace std;

void solve2(vector<int>& dp, vector<int>& num, vector<int>& used, int k, int n) {
    if (!k) {
        for (int i: dp) {
            cout << num[i];
        }
        cout << '\n';
        return;
    }
    for (int i = 0; i < n; i++) {
        if (!used[i]) {
            dp.push_back(i);
            used[i] = 1;
            solve2(dp, num, used, k - 1, n);
            used[i] = 0;
            dp.pop_back();
        }
    }
}

void init2() {
    int n, k;
    cin >> n >> k;

    vector<int> dp, num, used(n);
    for (int i = 1; i <= n; i++) {
        num.push_back(i);
    }

    solve2(dp, num, used, k, n);
}

void init() {
    int n, k;
    cin >> n >> k;

    vector<int> dp(k + 1, 0);

    solve(dp, n, k);
}
C++ 递归 优化 组合

评论


答: 暂无答案