题解 | 挡住洪水

挡住洪水

https://www.nowcoder.com/practice/56e54f4c2e3c4a58abfe76dbc1da1d7e

Java

DFS深度优先遍历

将四周的‘0’深度遍历为‘*’,最后统计所有的‘0’即可

import java.util.Scanner;


public class Main {
  //dfs写成了bfs,没有太大影响
    public static void bfs(char[][] ch,int i,int j){
        if(ch[i][j]=='*'){
            return ;
        }
        ch[i][j]='*';
        int x=ch.length;
        int y=ch[0].length;
        if(i-1>=0){
            bfs(ch,i-1,j);
        }
        if(i+1<x){
            bfs(ch,i+1,j);
        }
        if(j-1>=0){
            bfs(ch,i,j-1);
        }
        if(j+1<y){
            bfs(ch,i,j+1);
        }
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x=in.nextInt();
        int y=in.nextInt();
        char[][] ch=new char[x][y];
        for(int i=0;i<x;i++){
            ch[i]=in.next().toCharArray();  
        }
        for(int i=0;i<x;i++){
            if(ch[i][0]=='0'){
                bfs(ch,i,0);
            }
            if(ch[i][y-1]=='0'){
                bfs(ch,i,y-1);
            }
        }
        for(int j=0;j<y;j++){
            if(ch[0][j]=='0'){
                bfs(ch,0,j);
            }
            if(ch[x-1][j]=='0'){
                bfs(ch,x-1,j);
            }

        }
        int count=0;
        for(int i=0;i<x;i++){
            for(int j=0;j<y;j++){
                if(ch[i][j]=='0'){
                    count++;
                }
            }
        }
        System.out.println(count);
    }
}

全部评论

相关推荐

笑着秋招😊:我一直认为努力有回报是一件很幸福很幸福的事情,恭喜你
点赞 评论 收藏
分享
09-14 17:23
门头沟学院
故事和酒66:所以说副业很重要,程序员干到40岁,再怎么也赚300万了,吃吃利息也够活下去
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务