BitSetsを使用してJavaでプログラムを実装していますが、次の操作でスタックしています。
N個のビットセットが与えられた場合、すべてのビットセットに1つ以上ある場合は0のビットセットを返し、それ以外の場合は1を返します。
例として、次の3つのセットがあるとします。
- 10010
- 01011
00111
11100期待される結果
次のセットの場合:
- 10010
- 01011
- 00111
- 10100
00101
01000期待される結果
私はこれをビット単位の演算で排他的にしようとしていますが、必要なのは文字通り排他的またはすべてのセット間であることに気づきましたが、反復的な方法ではないため、何をすべきか非常に困惑しています。これも可能ですか?
各セットの各ビットをチェックし、各位置にカウンターを保持するというコストのかかる解決策を避けたかったのです...
助けてくれてありがとう
編集:一部の人が尋ねたように、これは私が取り組んでいるプロジェクトの一部です。私はタイムテーブルジェネレータを構築していますが、基本的にソフトな制約の1つは、1日に1つのクラスしかないということです。したがって、これらのセットは1時間に出席する生徒を表し、クラスが1つしかない生徒をフィルタリングしたいと思います。 。