我被要求实施以下功能:
void printNumber(int N, int K);
它打印所有长度为N
的二进制数,其中包含K
个。
e.g。
input: printNumber(3,2)
output:
011
101
110
我试图通过将二进制文件作为字符串来操作并使用递归来解决这个问题,但我想有一些位操作技巧可以更好地解决这个问题。
我可以在这里申请任何魔术吗?
答案 0 :(得分:0)
最好的方法是生成它们
def go(n,k):
if n == 0:
if k > 0:
return []
if k == 0:
return ['']
return ['0'+x for x in go(n-1,k)] + ['1'+x for x in go(n-1,k-1)];
答案 1 :(得分:0)
首先使用Integer.toBinaryString(i)找到二进制值,然后取出该值的排列