#include
using namespace std;
void print_set(int n,int k)
{
for(int i=0;i<(1<<n);i++)
{
int num=0,kk=i;//统计i中1的个数
while(kk)
{
kk=kk&(kk-1);//消除kk的二进制的最后一个1
num++;
}
if(num==k)
{
for(int j=0;j<n;j++)
{
if(i&(1<<j))cout<<j<<" ";
}
cout<<endl;
}
}
}
int main()
{
int n,k;
cin>>n>>k;
print_set(n,k);
}
子集生成和组合问题(2)
最新推荐文章于 2021-07-18 16:19:28 发布