問題:線上の点を表す配列A
が与えられている。 [5,-4,1,3,6]
、および番号M=3
の場合、A
内の点の最大部分集合がお互いの間の距離がM
の倍数であることが分かります。お互いの距離が数値の倍数である点の部分集合を見つける
この例では、2つの可能なサブセットは[-4,5]
(距離9)と[3,6]
(距離3)になります。
明白なブルートフォースの解決策は、O(N^2)
時間内の各点のペア間の距離を計算し、サブセットを段階的に構築することによって候補の集合を構築することです。
もっと効率的なソリューションはありますか?
ああ、ありがとう!なぜ私はまだ負の数を別々に処理する必要があるのかを理解していません。 – curpickled
これは、あなたが使用する言語でモジュラス演算がどのように機能するかによって異なります。これは、私が推測するアルゴリズムの一部ではなく、慎重な実装の詳細です。 – samgak