• 剑指 Offer 13. 机器人的运动范围


    水题一道,bfs

    class Solution {
    public:
        int vis[110][110];
        int dis[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
        
        int cal(int x)
        {
            int sum = 0;
            while(x)
            {
                sum += x % 10;
                x /= 10;
            }
            return sum;
        }
    
    
    
        void bfs(int &cnt, const int &m, const int &n, const int &k)
        {
            queue<pair<int, int> > Q;
            Q.push(pair<int, int> (0, 0));
            vis[0][0] = 1;
            cnt++;
            while(!Q.empty())
            {
                pair<int, int> u = Q.front(); Q.pop();
                for(int i = 0; i < 4; i++)
                {
                    int vx = u.first + dis[i][0];
                    int vy = u.second + dis[i][1];
                    if(vx < 0 || vy < 0 || vx >= m || vy >= n || vis[vx][vy] || cal(vx) + cal(vy) > k) continue;
                    vis[vx][vy] = 1;
                    cnt++;
                    Q.push(pair<int, int> (vx, vy));
                }
    
            }
    
        }
    
        int movingCount(int m, int n, int k) {
            memset(vis, 0, sizeof(vis));
            int cnt = 0;
            bfs(cnt, m, n, k);
            return cnt;
        }
    };
  • 相关阅读:
    通用Excel导入设计
    批量执行SQL文件
    ExtJS之对话框及窗口篇
    Windows Phone 7完整版模拟器
    C#迭代器
    XNA游戏开发之速度调整
    ExtJs之Panel篇
    Table锁定行列
    PB调用WebService示例(含源码)
    调用CodeSmith类库实现代码生成(含源码)
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/16154721.html
Copyright © 2020-2023  润新知