如果给出1的数量,我怎样才能找到所有可能的二进制表示?

lin*_*lin 4 pseudocode

给定N作为位数,K作为1的数量,如何生成包含K个和Nk零的所有二进制表示?

换句话说,我有:

N=4 //number of bits
K=2 //number of ones
Run Code Online (Sandbox Code Playgroud)

包含N位,K个和NK零的所有可能二进制值是:

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

到目前为止我什么都没有.我不是要求代码.我只想问最好的方法吗?一个算法?伪代码?也许是讨论?

编辑:我要求代码/伪代码来解决问题...而不是数学公式......

Joh*_*0te 5

还记得数学课的组合和排列吗?

谷歌它找到方程式,使用:http: //www.mathsisfun.com/combinatorics/combinations-permutations-calculator.html进行快速计算:)


And*_*unt 1

这更像是一个数学问题。你正在寻找一个长度为 N 的字符串,其中 K 为 1。所以你得到了N choose KN!/K!*(N-K)!如果没记错的话 -如果我错了,请其他人纠正!