剑指offer-13题 机器人运动范围

 

 

 

 

class Solution {
public:
    bool fun(int m ,int n ,int k)
    {
        int sum=0;
        while(m)
        {
            sum=sum+m%10;
            m=m/10;
        }
        while(n)
        {
            sum=sum+n%10;
            n=n/10;
        }
        if(sum<=k) return true;
        else return false;
    }
    int movingCount(int m, int n, int k) 
    {
        int count=0;
        queue< pair<int,int> >q;
        q.push(make_pair(0,0));
        vector< vector<int> >visited(m,vector<int>(n,0));
        visited[0][0]=1;
        while( !q.empty() )
        {
            auto temp=q.front();//队列里存放的是可以到达的
            q.pop();
            int x=temp.first;
            int y=temp.second;
            count++;//记录数值
            //四个方向数组
            int d[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
            for(int i=0;i<4;i++)
            {
                //注意这里
                int nx=x+d[i][0];
                int ny=y+d[i][1];
                if(nx>=0 && nx<m && ny>=0 && ny<n && visited[nx][ny]==0 && fun(nx,ny,k) )
                    {
                        visited[nx][ny]=1;
                        q.push(  make_pair(nx,ny) );
                    }
            }
        }
        return count;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值