クラスソリューション: DEF cuttingRope(自己、N:整数) - > INT: DP = [0 ため _ 中範囲(N + 1)] #DP [0] DP [1]其实没用 DP [2] = 1 #初始化 RES = -1 のための I における範囲(3、N + 1 ) のための J で:範囲(I) DP [I] = MAX(DP [i]は、MAX((I - J)* J、J * DP [ I - J])) 戻り DP [n]は、
明らかDP [ 2 ]に等しい 1 から外側のループ 3 N停止までトラバース。jから内側のループ 1 ( - J I)トラバースは、私は、それは私がJ +に分割することができる数を表し前まで停止されます。
しかしijは必ずしもDPよりも大きくないのでJ *(IJ)は、必ずしも最大の生成物である[IJ](最大積の和の整数倍にIJ分割)、最大値DPとして選択する。ここで、[I]結果。