Perfect Squares【279】

来源:互联网 发布:u盘安装ubuntu双系统 编辑:程序博客网 时间:2024/04/30 07:10




</pre><pre name="code" class="java">public class Solution {    public int numSquares(int n) {        int arr[] = new int[n+1];        arr[1] = 1;                for(int i=2 ;i<=n; i++){            int j=1;            int min = 10000000;                        while(j*j<=i){                if(j*j == i){                    min = 1;                }                                min = min>arr[i-j*j]+1?arr[i-j*j]+1:min;                                ++j;            }                        arr[i] = min;        }        return arr[n];    }}

解析:此题使用动态规划(dynamic programming)

【动态规划】

1.characterize the structure of an optimal solution.

2.recursively define the value of an optimal solution.

3.compute the value of an optimal solution. typically in a bottom-up fashion. 

4.construct an optimal solution from computed information.


此题中:先定义一个数组,用来存放<=n的所有最优解,从1到n依次算出每一个值的最优解并存储留作后用。


0 0