0

以下の機能の実装を依頼されました。

void printNumber(int N, int K);

N1を含むlength のすべての 2 進数を出力し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 に答える