解析:
比上一题多了一个条件,我们dfs时还需加上选了sum了
注意的是:如果sum+n-u<m 那么说明后面无论怎么选都无法选满m个
dfs 选与不选两种情况
#include<bits/stdc++.h>
using namespace std;
int n,m;
void dfs(int u,int sum,int state)
{
if(sum+n-u<m) return ;
if(sum==m)
{
for(int i=0;i<n;i++)
{
if(state>>i&1) cout<<i+1<<" ";
}
cout<<endl;
return ;
}
if(u==n) return ;
dfs(u+1,sum+1,state|1<<u);
dfs(u+1,sum,state);
}
int main()
{
cin>>n>>m;
dfs(0,0,0);
}