递归与递推

92. 递归实现指数型枚举

#include
#include
#include
#include
using namespace std;
const int N = 16;

int n;
int st[N];

void dfs(int u){
    if(u>n){
        for(int i=1;i<=n;i++){
            if(st[i] == 1)
                printf("%d ",i);
        }
        printf("\n");
        return ;
    }
    st[u] = 2;
    dfs(u+1);
    st[u] = 0;
    
    st[u] = 1;
    dfs(u+1);
    st[u] = 0;

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

94. 递归实现排列型枚举

#include
#include
#include
#include
using namespace std;
const int N = 10;

int n;
int st[N];
bool used[N];

void dfs(int u){
    if(u>n){
        for(int i=1;i<=n;i++)
            printf("%d ",st[i]);
        printf("\n");
        return ;
    }
    
    for(int i=1;i<=n;i++){
        if(!used[i]){
            st[u] = i;
            used[i] = true;
            dfs(u+1);
            st[u] = 0;
            used[i] = false;
        }
    }
}

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

你可能感兴趣的:(#,蓝桥杯,算法,深度优先)