题解 | #拜访#

拜访

https://www.nowcoder.com/practice/491828fc7d93459db450b344c2aaaeef

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param CityMap int整型vector<vector<>> 
     * @param n int整型 
     * @param m int整型 
     * @return int整型
     */
    int dx[4]={1,-1,0,0};
    int dy[4]={0,0,1,-1};
    int countPath(vector<vector<int> >& g, int n, int m) {
        vector<vector<bool>> st(n+1,vector<bool>(m+1,false));
        vector<vector<int>> dis(n+1,vector<int>(m+1,-1));

        vector<vector<int>> dp(n+1,vector<int>(m+1,0));
        queue<pair<int,int>> q;
        int ex,ey;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(g[i][j]==1)
                {
                    q.push({i,j});
                    dp[i][j]=1;
                    dis[i][j]=0; 
                    st[i][j]=true;
                }
                else if(g[i][j]==2)ex=i,ey=j;
                else if(g[i][j]==-1)st[i][j]=true;
            }
        }


        while(q.size())
        {
            int c=q.size();

            for(int i=1;i<=c;i++)
            {
                auto [x,y]=q.front();
                q.pop();
                for(int k=0;k<4;k++)
                {
                    st[x][y]=true;
                    int px =x+dx[k],py=y+dy[k];
                    if(px>=0&&px<n&&py>=0&&py<m&&!st[px][py])
                    {
                        if(dis[px][py]==-1)//只有第一次遍历到该点的时候才会把px,py加入队列
                        {
                            q.push({px,py});
                            dis[px][py]=dis[x][y]+1;
                            dp[px][py]+=dp[x][y];
                        }
                        else {
                            if(dis[px][py]==dis[x][y]+1)
                            {
                                dp[px][py]+=dp[x][y];
                            }

                        }
                    }
                }
                
            }   
        }
        return dp[ex][ey];

        
    }
};

全部评论

相关推荐

MingoTree:看不出你你的技术栈,想找什么工作,然后课设项目别写上去了,自我评价删了,前后端你想好你要干啥,这种简历投上去秒挂的
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:简历条例统一按使用了什么技术实现了什么功能解决了问题或提升了什么性能指标来写会好些,如使用布隆过滤器实现了判断短链接是否存在,大大提升了查询速度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务