递归实现排列型枚举

#include<iostream>
using namespace std;

const int N=10;
int n;
int state[N]; 
bool used[N];

void dfs(int u){
    if(u==n+1){
        for(int i=1;i<=n;i++){
            cout<<state[i]<<" ";
        }
        cout<<endl;
        return;
    }
    for(int i=1;i<=n;i++){
        if(!used[i]){
            state[u]=i;
            used[i]=true;
            dfs(u+1);
            state[u]=0;
            used[i]=false;
        }
    }
}

int main(){
    cin>>n;
    dfs(1);
    return 0;
}

 

posted on 2023-04-01 12:00  未晞之时  阅读(30)  评论(0)    收藏  举报