#Z1019. 限制数量的子集枚举

限制数量的子集枚举

题目描述

给定一个包含 nn 个元素的集合和一个整数 kk,按子集对应的二进制数从小到大的顺序,输出元素个数恰好为 kk 的所有子集。

输入格式

第一行两个整数 n,kn, k,表示集合的元素个数和要求的子集大小。

第二行 nn 个整数,表示集合的所有元素(元素互不相同)。

输出格式

每个符合条件的子集占一行,子集内的元素用空格隔开。按子集所对应的二进制数从小到大的顺序输出。

3 2
1 2 3
1 2
1 3
2 3
4 1
10 20 30 40
10
20
30
40
4 3
5 2 8 1
5 2 8
5 2 1
5 8 1
2 8 1

样例解释

样例 1 中,n=3,k=2n=3,k=2,二进制数中恰好有 2211 的有:011011 对应 {1,2}\{1,2\}101101 对应 {1,3}\{1,3\}110110 对应 {2,3}\{2,3\}

样例 2 中,k=1k=1,输出所有单元素子集。

样例 3 中,n=4,k=3n=4,k=3C(4,3)=4C(4,3)=4 个子集,按二进制从小到大依次输出。

数据范围与约定

子任务 分值 限制
11 100100 1n151 \le n \le 151kn1 \le k \le n,元素均在 int 范围内