クラス解決{ パブリック: int型 numSquares(int型N){ // 初始化ベクトル<整数> DP [I] = II = [0、N]。 // 状态转移方程DP [I] =分(DP [I]、DP [IJ * J] +1)IJ * J> = 0 && J = 0、J ++。 // 時間O(nsqrt(N))スペースO(1)。 ベクトル< int型 > DP; 以下のために(INT iが= 0 ; I <= N; I ++ ){ dp.push_back(I)。 } ため(INT iは= 1 ; iが<= N; I ++ ){ ため(INT J = 1 ; IJ * J> =0 ; J ++ ){ DP [I] =分(DP [I]、DP [IJ * J] + 1 )。 } } 戻りDP [n]は、 } }。