P1157 组合的输出-枚举子集

· · 个人记录

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
int v[30];;
int n,r;

int main()
{
    scanf("%d%d",&n,&r);
    int num=0;
    for(int i=(1<<n)-1;i>0;i--)
    {
        int cnt=0;
        for(int j=n-1;j>=0;j--)
            if(i&(1<<j)){
                v[cnt++]=n-j;

            } 
        if(cnt==r){
            for(int j=0;j<r;j++)
                printf("%3d",v[j]);
        cout<<endl;
            num++;
        }
    }

    return 0;
}