本文共 853 字,大约阅读时间需要 2 分钟。
BFS:
#includeusing namespace std;const int dirX[] = {-1,1,0,0};const int dirY[] = {0,0,-1,1};bool solve(int x,int y,int T){ int sum = 0; while(x>0){ sum += (x%10); x/=10; } while(y>0){ sum += (y%10); y/=10; } if(sum > T) return true; return false;}int movingCount(int threshold, int rows, int cols){ int ans = 0; queue > q; map ,bool> m; q.push(make_pair(0,0)); while(!q.empty()){ pair p = q.front(); q.pop(); if(m[p]) continue; m[p] = 1; int x = p.first; int y = p.second; if(solve(x,y,threshold)) continue; //printf("<%d %d>\n",x,y); ans ++; for(int i=0;i<4;i++){ if(x + dirX[i]<0 || y + dirY[i] <0 || x + dirX[i] >=rows || y + dirY[i] >=cols) continue; q.push(make_pair(x+dirX[i],y+dirY[i])); } } return ans;}int main(){ cout<
转载地址:http://afwji.baihongyu.com/