Day51 >> 99、计数孤岛 + 100、最大岛屿面积

代码随想录-图论Part2

99、计数孤岛

java 复制代码
import java.util.Scanner;

public class Main {
    public static int[][] dir = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
    public static void dfs(boolean[][] visited, int x, int y, int[][] grid) {
        for (int i = 0; i < 4; i++) {
            int nextX = x + dir[i][0];
            int nextY = y + dir[i][1];
            if (nextY < 0 || nextX < 0|| nextX >= grid.length || nextY >= grid[0].length) {
                continue;
            }
            if (!visited[nextX][nextY] && grid[nextX][nextY] == 1) {
                visited[nextX][nextY] = true;
                dfs(visited, nextX, nextY, grid);
            }
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int m = scanner.nextInt();
        int n = scanner.nextInt();
        int[][] grid = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                grid[i][j] = scanner.nextInt();
            }
        }
        boolean[][] visited = new boolean[m][n];
        int ans = 0;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) { 
                if (!visited[i][j] && grid[i][j] == 1) {
                    ans++;
                    visited[i][j] = true;
                    dfs(visited, i, j, grid);
                }
            }
        }
        System.out.println(ans);
        scanner.close();
    }
}

100、最大岛屿面积

java 复制代码
package test.java;

import java.util.Scanner;

public class dfsPart2 {
    static final int[][] dir = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
    static int result = 0;
    static int count = 0;
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int[][] map = new int[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                map[i][j] = scanner.nextInt();
            }
        }
        boolean[][] visited = new boolean[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (!visited[i][j] && map[i][j] == 1) {
                    count = 0;
                    dfs(visited, i, j, map);
                    result = Math.max(result, count);
                }
            }
        }
        System.out.println(result);
        scanner.close();
    }

    public static void dfs(boolean[][] visited, int x, int y, int[][] grid) {
        count++;
        visited[x][y] = true;
        for (int i = 0; i < 4; i++) { 
            int newX = x + dir[i][0];
            int newY = y + dir[i][1];
            if (newX < 0 || newY < 0 
                || newX >= grid.length || newY >= grid[0].length
                || visited[newX][newY] || grid[newX][newY] == 0) {
                continue;
            }
            dfs(visited, newX, newY, grid);
        }
    }
}
相关推荐
GoodStudyAndDayDayUp2 分钟前
一个简单的java jar跑docker
java·docker·jar
Nebula_g15 分钟前
JavaSE加强:Commons-io框架
java·开发语言·算法·javase
FITA阿泽要努力16 分钟前
第1周·第2讲|一道综合代码推演
服务器·前端·python·agent.
程序猿_极客25 分钟前
【免费】2026分享一套优质的基于Java的电子产品抢购管理系统的设计与实现(智能推荐算法+可视化图表),源码+文档+视频详解(讲解)
java·spring boot·后端·协同过滤·电子产品抢购系统
小羊没烦恼!27 分钟前
关于大型asp.net应用系统的架构-架构的选择
java·服务器·开发语言·前端·c#
天空鸟_时光不老28 分钟前
09-RAG问答系统落地:从默认分割器的坑到Milvus召回调优
java·人工智能·spring boot·spring·spring cloud·maven·mybatis
2301_7779983435 分钟前
TCP连接断开:进程终止、主机断电与网络断开
linux·服务器·网络·tcp/ip
小羊没烦恼!37 分钟前
Windows Azure Platform体验(1):Windows Azure
java·大数据·后端·python·flask·word·.net
suaizai_1 小时前
ComputerUse:让AI真正操控桌面系统
java·前端·javascript
发量惊人的中年网工1 小时前
服务器托管一个机柜一年多少钱?2026年9月最新机柜租用价格参考
运维·服务器·网络