字节笔试

void dfs(vector<vector<char>>& arr,vector<vector<int>>&vistied,int x,int y,int& res){
    res++;
    int len_x=arr.size();
    int len_y=arr[0].size();
    vistied[x][y]=1;
    if(x-1>=0&&!vistied[x-1][y]&&(arr[x-1][y]=='D'||arr[x-1][y]=='.')) dfs(arr,vistied,x-1,y,res);
    if(x+1<len_x&&!vistied[x+1][y]&&(arr[x+1][y]=='U'||arr[x+1][y]=='.')) dfs(arr,vistied,x+1,y,res);
    if(y-1>=0&&!vistied[x][y-1]&&(arr[x][y-1]=='R'||arr[x][y-1]=='.')) dfs(arr,vistied,x,y-1,res);
    if(y+1<len_y&&!vistied[x][y+1]&&(arr[x][y+1]=='L'||arr[x][y+1]=='.')) dfs(arr,vistied,x,y+1,res);    
}
int main() {
    int n,m;
    cin>>n>>m;
    vector<vector<char>> mapp(n,vector<char>(m));
    int x,y;
    for(int i=0;i<n;i++){
        string aa;
        cin>>aa;
        for(int j=0;j<m;j++){
            mapp[i][j]=aa[j];
            if(mapp[i][j]=='O'){
                x=i;
                y=j;
            }
        }
    }
    vector<vector<int>> visited(n,vector<int>(m,0));
    int res=0;
    dfs(mapp,visited,x,y,res);
    cout<<m*n-res<<endl;
}

#原来字节劝退的只是我,罢了罢了#
全部评论

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务