获取大小为 n 但只有 k 个 1s 的所有二进制组合

Abd*_*son 5 java binary

所以我试图生成大小为 n 的所有二进制文件,但条件是只有 k 1s。IE

对于大小 n = 4,k=2,(有 2 种超过 4 种组合)

1100
1010
1001
0110
0101
0011
Run Code Online (Sandbox Code Playgroud)

我被卡住了,无法弄清楚如何生成它。

das*_*ght 0

一种方法是从数字 0..k集合中生成值的所有组合,并使用这些值来设置输出中的相应位。nn-1

此问答解释了如何k从 生成所有元素组合n。掌握这些组合后,使用按位 OR of1 << v[c][i]生成最终结果,其中v[c][i]表示i组合 number 中的第 - 个数字c