Binary 面试问题:找到所有包含K1';s

Binary 面试问题:找到所有包含K1';s,binary,combinations,Binary,Combinations,我被要求实现以下功能: void printNumber(int N, int K); 它打印长度为N的所有二进制数,其中包含K个 e、 g 我试图通过将二进制操作为字符串并使用递归来解决这个问题,但我想有一些位操作技巧可以更好地解决这个问题 我可以在这里应用一些魔法吗?最好的方法是生成它们 def go(n,k): if n == 0: if k > 0: return [] if k ==

我被要求实现以下功能:

void printNumber(int N, int K);
它打印长度为
N
的所有二进制数,其中包含
K

e、 g

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


我可以在这里应用一些魔法吗?

最好的方法是生成它们

   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)];

首先使用Integer.toBinaryString(i)查找二进制值,然后取出该值的排列
   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)];