18491 岛屿的数量

18491 岛屿的数量

⭐️难度:中等

🌟考点:搜索

📖

📚

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

public class Main {
    static int[][] a = new int[505][505];
    static int[] dx = {0,0,1,-1};
    static int n;
    static int[] dy = {1,-1,0,0};  // 用数组表示移动方向,分别对应 右 左 上 下

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        n = sc.nextInt();
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                a[i][j] = sc.nextInt();
            }
        }

        int ans = 0;
        for (int i = 1; i <= n; i++) {
            for (int j = 0; j <= n; j++) {
                if(a[i][j] == 1){
                    bfs(i,j);
                    ans ++;
                }
            }
        }
        System.out.println(ans);
    }

    static void bfs(int x,int y){
        a[x][y] = 0; // 访问过的陆地变成海洋
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                int ax = dx[i] + x;
                int ay = dy[i] + y;
                if(ax < 1 || ay < 1 || ax > n + 1 || ay > n + 1 || a[ax][ay] == 0) continue; // 检查坐标合法,且是陆地
                bfs(ax,ay);
            }
        }
    }
}

🍎笔记

相关推荐
oioihoii2 分钟前
C++23文本编码革新:迈向更现代的字符处理
java·数据库·c++23
Dxy12393102167 分钟前
Python对字典列表按某个字段排序
开发语言·python
.hopeful.7 分钟前
基于QT的仿QQ音乐播放器
开发语言·c++·qt
_一条咸鱼_13 分钟前
揭秘 Android View 测量原理:从源码到实战深度剖析
android·面试·android jetpack
Seven9716 分钟前
记录一次线上问题排查:JDK序列化问题
java
风象南18 分钟前
SpringBoot中4种登录验证码实现方案
java·spring boot·后端
giao源23 分钟前
JAVA实现将富文本内容插入已有word文档并下载(dock4j+jsoup)
java·开发语言·word
努力也学不会java24 分钟前
【网络原理】 网络编程套接字
java·开发语言·网络·网络协议·tcp/ip·php
_一条咸鱼_25 分钟前
揭秘Android View布局底层逻辑:万字源码深度剖析与实战解析
android·面试·kotlin
_一条咸鱼_28 分钟前
破茧成蝶!深度剖析 Android Button 底层运作奥秘
android·java·面试