代码注释中解释了题目

using namespace std;
int a[20];
int used[20];
int n;
void dfs(int t,int num,int j){//t作为已经选择数的个数 num作为每次要选择数的个数 
    //j记录上次选择的数字  可以通过此 枚举下一个数字  (题目要求升序)
    if(t==num){
        for(int i =0;i<num;i++){
            cout<<a[i]<<" ";
        }
        cout<< endl;
        return;
    }
    for(int i =j+1;i<=n;i++){
//         if(used[i]){
//             a[t]=i;
//             used[i]=1;
//         }
        a[t]=i;//放进数组
        dfs(t+1,num,i);//dfs
    }
}
int main(){
    cin >> n;
//     for(int i =0;i<n;i++){
//         a[i]=i+1;
//         used[i]=0;
//     }
    for(int i =0;i<=n;i++){
        dfs(0,i,0);
    }
    return 0;
}