0

我被要求实现以下功能:

void printNumber(int N, int K);

它打印所有长度的二进制数N,其中包含K一个。

例如

input: printNumber(3,2) 
output: 
011
101
110

我试图通过将二进制文件作为字符串操作并使用递归来解决这个问题,但我想有一些位操作技巧可以更好地解决这个问题。

我可以在这里应用任何位魔法吗?

4

2 回答 2

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)];
于 2013-04-26T01:27:11.693 回答
0

首先使用 Integer.toBinaryString(i) 找到二进制值,然后取出该值的排列

于 2013-05-10T08:15:55.430 回答