首页 > 其他分享 >104. 建造最大岛屿(kamacoder)

104. 建造最大岛屿(kamacoder)

时间:2024-10-18 21:10:40浏览次数:4  
标签:kamacoder int 岛屿 vis boolean static new 104

https://kamacoder.com/problempage.php?pid=1176

import java.util.*;

public class Main {

    static int[] dx={0,1,0,-1};
    static int[] dy={1,0,-1,0};
    static int n;
    static int m;
    static int[][] grid;
    static boolean[][] vis;

    static int area;

    public static void main(String[] args) {
        // 题意:将一格进行变化,得到的最大面积是多少?
        // 思路:根据数据范围50,可以暴力枚举每一个格子变化,得到的面积取max
        Scanner in = new Scanner(System.in);
        int res=0;
        n=in.nextInt();
        m=in.nextInt();
        grid=new int[n][m];
        vis=new boolean[n][m];
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                grid[i][j]=in.nextInt();
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(grid[i][j]==0 && vis[i][j]==false)
                {
                    // 尝试将当前枚举的方格变化,进行flood fill
                    vis=new boolean[n][m];
                    grid[i][j]=1;
                    area=0;
                    dfs(i,j);
                    grid[i][j]=0;
                    res=Math.max(res,area);
                }else if(vis[i][j]==false && grid[i][j]==1)
                {
                    vis=new boolean[n][m];
                    area=0;
                    dfs(i,j);
                    res=Math.max(res,area);
                }
            }
        }
        System.out.println(res);
    }

    static void dfs(int x,int y)
    {
        vis[x][y]=true;
        area++;
        for(int i=0;i<4;i++)
        {
            int a=dx[i]+x,b=dy[i]+y;
            if(a>=0 && b>=0 && a<n && b<m && vis[a][b]==false && grid[a][b]==1)
            {
                dfs(a,b);
            }
        }
    }

}

 

标签:kamacoder,int,岛屿,vis,boolean,static,new,104
From: https://www.cnblogs.com/lxl-233/p/18475060

相关文章

  • 岛屿数量(深度优先遍历)
    给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例1:输入:grid=[["1","1","1","1","0"],["1","1",&qu......
  • RBE104TC C/C++ Programming Language
    RBE104TCC/C++ProgrammingLanguageAssignment1ContributiontotheOverallMarks30%IssueDateSubmissionDeadline13thOctober2024AssignmentOverview:ThisassignmentisgearedtowardsassessingfundamentalcodingconceptsinC/C++andinitiatingthep......
  • 1045,买下所有产品的客户
    买下所有产品的客户分析第一步:查询每一位客户购买了多少种产品#查询每一位客户购买了多少种产品selectcustomer_id,count(distinctproduct_key)fromcustomergroupbycustomer_id;在这里考虑到product_key可能有重复的情况,我们使用了distinct关键......
  • ab压测的选项、示例和主要关注的指标意义以及ab压测问题Connection reset by peer (10
    一、ab压测的选项、示例和主要关注的指标意义1.ab压测的一些选项-nrequests    全部请求数-cconcurrency 并发数-ttimelimit   最传等待回应时间-ppostfile    POST数据文件-Tcontent-typePOSTContent-type-vverbosity   Howmuchtroubl......
  • P1048 采药
    辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你......
  • 第104天:权限提升-Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
    知识点总结#知识点:1、Linux提权-定时任务2、Linux提权-环境变量3、Linux提权-权限配置不当4、Linux提权-数据库自动化#系列内容:内核,数据库,第三方服务,SUID&GUID,定时任务,环境变量,SUDO,权限不当等脏牛漏洞(CVE-2016-5195)DirtyPipe(CVE-2022-0847)SUDO(CVE-2021-3156)Polki......
  • 力扣数据库1045. 买下所有产品的客户
    一、数据1045.买下所有产品的客户-力扣(LeetCode)Customer 表:+-------------+---------+|ColumnName|Type|+-------------+---------+|customer_id|int||product_key|int|+-------------+---------+该表可能包含重复的行。customer_id不......
  • P1043 [NOIP2003 普及组] 数字游戏
    链接:https://www.luogu.com.cn/problem/P1043题面:思路:区间dp,设dpmax/dpmin[i][j][k]表示从序列i->j分成k份的最大/最小值,然后根据递推公式dpmin[i][j][m]=min(dpmin[i][j][m],dp[i][k][mi]*dp[k+1][j][m-mi]),for∀mi∈[1,m),k∈[i,j)注意不用取模,因为求出来的就已经是相......
  • 104th 2024/10/8 模拟赛总结60
    T1有感觉,因为AB组一起打,所以下意识认为是水题(实际上也不算难?)就直接开始想从深向浅直接扫一遍,能转就转显然错,从浅向深扫一遍同样不对,因为不知道往上转移的顺序比如,设该点为x,是0,有的儿子可能转移到x,其子树内转移的次数比另一个儿子多,所以就要优先它不好处理,看到数据,给了一档2e5,一......
  • 深度优先搜索 - 岛屿问题
    题目描述给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。200.岛屿数量-力扣(LeetCode)示例:输入:grid=[["1","1","0......