33分求助!

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

better_Z @ 2023-04-14 17:39:24


using namespace std;

int n,k,w=0;

int a[501010];

int u[501010]={0};

void dfs(int x){

    if(x>k){

        for(int i=0;i<k;i++)cout<<a[i];

        puts("");

        return ;

    }

    for(int j=1;j<=n;j++){

        if(u[j]==0){

            u[j]=1;

            a[w++]=j;

            dfs(x+1);

            w--;

            u[j]=0;

        }

    }

}

int main(){

    cin>>n>>k;

    dfs(1);

    return 0;

}

by DreamLand_zcb @ 2023-04-14 18:00:16

@better_Z 把 j 的循环改成x+1到n试试?


|