タイトルと同じ質問。私は2つのアプローチを行いました。1つは簡単です。からすべてのビットマスクを生成します
2 ^ {n-1}
に
2 ^ n
そして、すべてのビットマスクについて、同じ量の1と0があるかどうかを確認し、ある場合は、それに取り組みます。そして、それが問題です。なぜなら、私はそれらを数えるだけでなく、それらのビットマスクに取り組む必要があるからです。
O(2 ^ {n / 2})時間で実行される2番目のアプローチがありましたが、すべてのビットマスクが生成されていないようで、理由はわかりません。
2番目のアプローチは次のようなものです:0から2 ^ {n / 2}までのすべてのビットマスクを生成し、有効なビットマスク(Bと呼びます)を取得するには、次のようなことを行う必要があります:B#〜B
ここで、〜は負です。
たとえば、n = 6なので、長さ3のビットマスクを生成します。
たとえば、私はB = 101であるため、〜Bは010になり、最終的なビットマスクは101010になります。これからわかるように、1と0の数は同じです。
この方法は良いですか、それとも私は何か悪いことを実装していますか?たぶん、別の興味深いアプローチが存在しますか?ありがとう
クリス