题目

acwing93. 递归实现组合型枚举

题解

dfs(u,start),其中u是当前第u个位置,start是从哪里开始枚举

#include<iostream>
using namespace std;
const int N=25;
int n,m;
int path[N];
void dfs(int u,int start){
    if(u+n-start<m)return;
    if(u==m+1){
        for(int i=1;i<=m;i++)cout<<path[i]<<" ";
        puts("");
        return ;
    }
    for(int i=start;i<=n;i++){
        path[u]=i;
        dfs(u+1,i+1);
        path[u]=0;
        
    }
}
int main(){
    cin>>n>>m;
    dfs(1,1);
    
    return 0;
}