本题应用递归,解决问题。
本题,题目比较容易理解,在此不作过多解释
#include<bits/stdc++.h>
using namespace std;
int m,n;
vector<int>res;
void dfs(int pos,int cnt)
{
    if(cnt==m)//判断条件如果个数等于m,直接输出答案;
    {
        for(int i=0;i<m;i++)
      {
          if(i>0)
            cout<<" "<<res[i];
          else
            cout<<res[i];
      }
      cout<<endl;
      return ;
    }
      else
      {
          for(int i=pos;i<=n;i++)//让i=pos,可以保证无重复,升序排列
          {
              res.push_back(i);//个数未到达m,插入i
              dfs(i+1,cnt+1);//使用递归
              res.pop_back();//删除最后一个元素,追溯下一个新元素
          }
      }
}

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