AcWing 蓝桥杯C++ AB组辅导课 第一讲递归与递推

蓝桥杯C++ AB组辅导课

例题

92. 递归实现指数型枚举
AcWing 蓝桥杯C++ AB组辅导课 第一讲递归与递推_第1张图片
AC代码:

#include 
#include 
#include 
#include 

using namespace std;
const int N = 16;

int st[N];
int n;

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

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

94. 递归实现排列型枚举
AcWing 蓝桥杯C++ AB组辅导课 第一讲递归与递推_第2张图片
AC代码:

#include 
#include 
#include 
#include 

using namespace std;
const int N = 10;

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

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


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

你可能感兴趣的:(yxc,yyds,蓝桥杯,c++,深度优先,递归算法)