只需从0开始到2^n枚举,输出二进制下1的个数有h个的数
#include <stdio.h>
int count1(int x) {
int cnt = 0;
for ( ; x ; x>>=1)
if (x & 1)
cnt++;
return cnt;
}
int main() {
int l, n, h, i, j;
scanf("%d", &l);
while (l--) {
scanf("%d%d", &n, &h);
for (i=0 ; i<1<<n ; i++)
if (count1(i) == h) {
for (j=n-1 ; j>=0 ; j--)
if ((i>>j) & 1)
putchar('1');
else
putchar('0');
putchar('\n');
}
if (l)
putchar('\n');
}
}