Perfect Squares

来源:互联网 发布:tensorflow dense 编辑:程序博客网 时间:2024/06/05 09:18

279. Perfect Squares

Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n.

For example, given 

n = 12, return 3 because 12 = 4 + 4 + 4

given n = 13, return 2 because 13 = 4 + 9.

本题主要采用递归DP的思想,用一个map记录计算过的n对应的最少Perfect Squares,

递归式:

n==0   : return 0

其它:return min{numSquares(n%i^2 )+n/i^2 | i∈[1,√n]}

class Solution {public:int numSquares(int n) {if(n==0) return 0;if (record.count(n))                   //已经计算过,直接将结果返回{return record[n];}int miniCount = INT_MAX;for (int i=sqrt(n);i>0;--i){int power = i*i;miniCount = min(numSquares(n%power)+n/power,miniCount);  //递归式求取}record[n] = miniCount;         //将结果记录(DP)return miniCount;}private:map<int,int> record;};


0 0
原创粉丝点击