class Solution {
public:
int numSquares(int n) {
int *res=new int[n+1];
res[0]=0;
res[1]=1;
int temp;
for(int i=2;i<=n;i++)
{
temp=99999999;
for(int j=1;j*j<=i;j++)
{
if(j*j==i)
{
temp=1;//此处是temp=1而不是res[i]=1,因为跳出循环后还有一次对res[i]的赋值,如果不改变temp,res[i]会被temp改变
break;
}
temp=min(res[i-j*j]+1,temp);
}
res[i]=temp;
}
return res[n];
}
};
public:
int numSquares(int n) {
int *res=new int[n+1];
res[0]=0;
res[1]=1;
int temp;
for(int i=2;i<=n;i++)
{
temp=99999999;
for(int j=1;j*j<=i;j++)
{
if(j*j==i)
{
temp=1;//此处是temp=1而不是res[i]=1,因为跳出循环后还有一次对res[i]的赋值,如果不改变temp,res[i]会被temp改变
break;
}
temp=min(res[i-j*j]+1,temp);
}
res[i]=temp;
}
return res[n];
}
};