67分

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

迪克·文森 @ 2024-07-19 15:40:08

我是洛谷网校的学员 代码

#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]) { // 如果第 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 WayneLiu @ 2024-07-19 21:24:40

第八行if(pos == n+1)应改为if(pos == k+1)


by WayneLiu @ 2024-07-19 21:47:23

额……他好像已经提前AC了


by 迪克·文森 @ 2024-07-20 14:50:43

@澄蔚2014 谢谢您,对不起啊,有点马虎


|