求助 只能过50 样例就过不了,有佬能告诉我哪些是细胞吗
查看原帖
求助 只能过50 样例就过不了,有佬能告诉我哪些是细胞吗
917483
Yanfang_ysmla楼主2024/3/25 22:19
import java.util.Scanner;

public class Main {
    public static int N, M, result = 0;
    public static char[][] graph;
    static Scanner sc = new Scanner(System.in);


    public static void main(String[] args){
        N = sc.nextInt();
        M = sc.nextInt();

        graph = new char[N][M];
        for (int i = 0;i < N;i++){
            graph[i] = sc.next().toCharArray();
        }

        for (int i = 0;i < N;i++){
            for (int j = 0;j < M;j++){
                if (graph[i][j] != '0'){
                    result ++;
                    dfs(i, j, graph[i][j]);
                }
            }
        }

        System.out.println(result);
        sc.close();
    }
    //标记为 '0',判断是否为ch
    public static void dfs(int i, int j, char ch) {
        int[] dx = {0,0,-1,1};
        int[] dy = {1,-1,0,0};

        graph[i][j] = '0';
        for (int k = 0;k < 4;k++){
            int x = dx[k] + i;
            int y = dy[k] + j;
            if (x >= 0 && x < N && y >= 0 && y < M && graph[x][y] == ch){
                dfs(x, y, ch);
            }
        }
    }
}
2024/3/25 22:19
加载中...