67分求助!!!

B3623 枚举排列(递归实现排列型枚举)

arcticfox_LQX @ 2024-04-06 15:31:42

#include <bits/stdc++.h>

using namespace std;

int n, k;
int a[15], use[15];

void dfs(int pos) {

    if(pos == n+1) {
        for(int i = 1; i <= k; i++)
            cout << a[i] << ' ';
        cout << endl;

        return;
    }

    for(int i = 1; i <= n; i++)
        if(use[i]==0) { // 如果第 i 个元素没有被使用
            use[i] = 1; // 将其标记为被使用
            a[pos]=i; // 更新 a[pos]
            dfs(pos+1); // 枚举下一个
            use[i] =0; // 将其标记为未被使用
        }
}

int main() {

    cin >> n >> k;

    dfs(1);

    return 0;
}

by Andrews123 @ 2024-04-13 20:44:34

dfs里那个IF pos==n+1 不对,改一下,这里不能直接给出答案请谅解…… @liqiuxu


by czh___ @ 2024-05-09 05:56:40

@liqiuxu pos=k+1


|