WA on #2,66pts求助!!!

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

44i11 @ 2023-11-19 22:45:09

#include<bits/stdc++.h>
//#include<conio.h>
//#include<windows.h>
using namespace std;
int t[10],n,vis[10],m;
void print(int m){
    for(int i=0;i<m;i++){
        cout<<t[i]<<" ";
    }
    cout<<"\n";
}
bool pd(){
    for(int i=1;i<=m;i++){
        if(!vis[i]){
            return 0;
        }
    }
    return 1;
}
void dfs(int i,int step){
    t[step]=i;
    vis[i]=1;
    if(pd()){
        print(m);
        return;
    }
    for(int j=1;j<=n;j++){
        if(vis[j]){
            continue;
        }
        vis[j]=1;
        dfs(j,step+1);
        vis[j]=0;
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        memset(vis,0,sizeof(vis));
        dfs(i,0);
    }
    return 0;
}

by Christian_ @ 2024-02-19 18:08:30

#include <bits/stdc++.h>
using namespace std;

const int N=10;
int n,k;
int st[N],a[N];//st[]来表示第i个人是否选了

void dfs(int x){//x表示位置
    if(x>k){
        for(int i=1;i<=k;i++){
            cout<<a[i]<<" ";
        }cout<<endl;
        return ;
    }
    for(int i=1;i<=n;i++){
        if(st[i]==0){
            st[i]=1;
            a[x]=i;
            dfs(x+1);
            st[i]=0;
            a[x]=0;
        }
    }
}

int main(){
    scanf("%d%d",&n,&k);
    memset(st,0,(k+1)*4);
    dfs(1);
    return 0;
}

@44i11


|