過去にこれと同様の問題に遭遇しましたが、この問題を解決する方法がまだよくわかりません。問題は次のようになります。
サイズ n <= 1000 および k <= n の正の整数配列が与えられます。これは、配列を分割する必要がある連続したサブ配列の数です。最小 m を出力する必要があります。ここで、m = max{s[1],..., s[k]} であり、s[i] は i 番目の部分配列の合計です。配列内のすべての整数は 1 ~ 100 です。例:
Input: Output:
5 3 >> n = 5 k = 3 3
2 1 1 2 3
配列を 2+1 に分割 | 1+2 | 3 は m を最小化します。
私の強引なアイデアは、最初のサブアレイを位置 i で終了させ (可能なすべての i に対して)、可能な限り最良の方法で残りのアレイを k-1 サブアレイに分割しようとすることでした。ただし、これは指数関数的なソリューションであり、決して機能しません。
だから私はそれを解決するための良いアイデアを探しています。もしお持ちでしたら教えてください。
ご協力いただきありがとうございます。