StackOverflowでこの質問をしましたが、ここがより適切な場所だと思います。
これは、アルゴリズムコースの概要からの問題です。
n個の正の整数を持つ配列があります(配列を並べ替えたり、要素を一意にする必要はありません)。示唆O (N )で割り切れる要素の最大和見つけるためのアルゴリズムをnと。
例: = [ 6 、1 、13 、4 、9 、8 、25 ] 、N = 7。答えは56(要素と6 、13 、4 、8 、25)
それはそれを見つけることは比較的簡単です動的プログラミングを使用して、残りで最大の和を格納0 、1 、2 、。。。、n − 1。
また、我々は要素の連続配列に注意を制限した場合、それはに最適なシーケンスを見つけるのは簡単だ時間、部分和を格納することによって、モジュロN:聞かせてS [ I ] = [ 0 ] + [ 1 ] + ⋯ + [ I ]、各剰余のためにR最大インデックス覚えJようにS [ J ] ≡ Rを
しかし、一般的な場合の時間の解決策はありますか?どんな提案も大歓迎です!これには線形代数を扱うものがあると思いますが、何が正確かはわかりません。
あるいは、これは時間で実行できますか?