少なくとも2つの正の整数に分割され、正の整数nを与え、それらの整数の積が最大。あなたが製品を得ることができ、最大で返します。
例1:
入力:2
出力:1
説明:2 + 1 = 1、1 ×1 = 1。
例2:
入力:10
出力:36の
説明:10 + 4 = 3 + 3 、3×3×4 = 36。
注:なお、nは2未満以上、58ではないと仮定することができます。
1つの パブリック クラスT343 { 2 公共 INT integerBreak(int型N){ 3 のint [] DP = 新しい INT [N + 1 ]。 4 Arrays.fill(DP、1 )。 5 のための(INT I 3 =; iが<= N; I ++ ){ 6 のための(INT J = 1、J <I、J ++ ){ 7 DP [I] = Math.max(DP [i]は、Math.max( J *(I - J)、J * DP [I - J]))。 8 } 9 } 10 リターンDP [n]は、 11 } 12 }