1、
2、
class Solution {
public:
int numSquares(int n) {//BFS
int top=floor(sqrt(n));//n开方以后的最小根 整数 2.3 2
queue<int> q;//设置队列
q.push(0);//放置初始元素0,树头0
int res=0;//结果数量
while(!q.empty())
{
int num=q.size();
res++;
for(int i=0;i<num;i++)//一个子树 这里确定根节点
{
int temp=q.front();
q.pop();
for(int j=0;j<=top;j++)
{
int sum=temp+pow(j,2);//根加1 4 9..
if(sum==n)
{
return res;
}
if(sum>n)
{
continue;//大了
}
q.push(sum);
}
}
}
return -1;
}
};