1 ""」 2は、 正の整数を考えると、N、Nに(例えば、1、4、9、16、...)は和完全平方数の最小数を見つける。 3 実施例1: 4 入力:N = 12 5 出力:3 6 解説:12 = 4 + 4 + 4 7 実施例2: 8 入力:N = 13 9 出力:2 10 説明:13 = 4 + 9 11 "" " 12 """ 13 、DP [0 ] = 0 14 DP [1] = DP [0] +1 = 1つの 15 DP [2] = DP [1] +1 = 2 16 DP [3] = DP [2] +1 = 3 17 DP [4] =最小{DP [4-1 * 1] +1、DP [4-2 * 2] +1} 18 =最小{DP [3] +1、DP [0] +1} 19 = 1つの 20 DP [5] =最小{DP [5-1 * 1] +1、DP [5-2 * 2] +1} 21 =最小{DP [4] +1、DP [1] +1} 22 = 2 23 。 24 。 25 。 26 DP [13] =最小{DP [13-1 * 1] +1、DP [13-2 * 2] +1、DP [13-3 * 3] +1} 27 =最小{DP [12] + 1、DP [9] +1、DP [4] +1} 28 = 2 29 。 30 。 31 。 32 DP [N] =最小{DP [N -私は*] + 1}、N -私は* I> = 0 && I> = 1 33は、 DP [n]の二乗の数との和を表すN(リクエスト)です。 34は、 配列が完全平方数を有するすべてのインデックスが1に設定されている番号(例えば、1,4,9 ...)、プラス電流iの最小のjを組み合わせた長さを見つける層トラバースあるDP。 35 動的方程式は、という意味:[ - J * J i]は各iについて、iの最小数+1の正方形のものの完全な数よりも小さい場合は、所望の、即ちDPである + 1。36 "" " 37 [ クラス解決法1: 38れる DEF (Nセルフ)numSquaresは: 39 DP = [フロート(' INF ')] *(N + 1 ) 40 I = 1。 41は、 一方 I * I <= N-: 42である [DP私は、* I] 1 = 43である I = + 1。 44がある ために I に範囲(1 ,. 1 N- +。 )。 45 J = 46 、一方 J * J <= I: 47 DP [I] =分(DP [i]は、DP [IJ * J] +1 ) 48 J + = 1つの 49 戻り DP [N]