例: 配列: 4,3,0,1,5 {すべての数字が >=0 であると仮定します。また、配列の各要素は数字に対応します。つまり、配列の各要素は 0 から 9 の間です。 }
上記の配列では、最大数は次のとおりです: 5430 {配列の数字 5、4、3、および 0 を使用}
私のアプローチ:
3 で割り切れるには、桁の合計が 3 で割り切れる必要があります。したがって、
- ステップ-1: 配列からすべてのゼロを削除します。
- ステップ-2: これらのゼロは最後に来ます。{合計には影響しないため、最大数を見つける必要があります}
- ステップ-3: 桁数が MAXIMUM で、桁の合計が MAXIMUM で、合計が 3 で割り切れる配列の要素のサブセット (ゼロを除く) を見つけます。
- STEP-4: 必要な数字は、上記の見つかったセットの数字を降順に並べたものです。
したがって、主なステップはSTEP-3です。つまり、合計がMAXで3で割り切れるMAXIMUM可能な要素数を含むサブセットを見つける方法です。
ステップ 3 は、すべての要素を取り、合計が 3 で割り切れるまでセット内の最小の要素を削除し続けるという GREEDY CHOICE によって実行できるのではないかと考えていました。
しかし、この貪欲な選択が機能するとは確信していません。
私のアプローチが正しいかどうか教えてください。もしそうなら、Step-3のやり方を教えてください。
また、他の可能な/効率的なアルゴリズムを提案してください。