本题应用递归,解决问题。
本题,题目比较容易理解,在此不作过多解释
#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;
}



京公网安备 11010502036488号