279. 完全平方数
1 class Solution 2 { 3 public: 4 int numSquares(int n) 5 { 6 queue<pair<int,int>> Q; 7 Q.push(make_pair(n,0)); 8 vector<bool> visit(n+1,false); 9 //层序遍历减枝,图可能会反复遍历相同的节点。这里之前遍历过的,后面就不用遍历计算了。 10 visit[n] = true; 11 while(!Q.empty()) 12 { 13 int num=Q.front().first; 14 int step=Q.front().second; 15 Q.pop(); 16 for(int i=1;num-i*i>=0;i++) 17 { 18 int a=num-i*i;//a为减去平方之后的剩余 19 if(a<0)break; 20 if(a==0) return step+1;//如果剩余0则正好返回step+1 21 if(!visit[a]) 22 { 23 Q.push(make_pair(a,step+1)); 24 visit[a]=true; 25 } 26 } 27 } 28 return 0; 29 } 30 };
Mamba never out

浙公网安备 33010602011771号