当前位置: 首页 > news >正文

中国山东建设监理协会官方网站深圳网络品牌推广公司

中国山东建设监理协会官方网站,深圳网络品牌推广公司,设计图片模板,皮革材料做网站前言:前段时间论文开题落下了很多进度,今天开始会尽快赶上 99.岛屿数量 深搜 思路:对地图进行遍历遇到一个没有遍历过的陆地节点,计数器就1,并把该节点所能遍历到的陆地都标记上;遇到标记过的陆地节点和海…

前言:前段时间论文开题落下了很多进度,今天开始会尽快赶上

99.岛屿数量 深搜

思路:对地图进行遍历遇到一个没有遍历过的陆地节点,计数器就+1,并把该节点所能遍历到的陆地都标记上;遇到标记过的陆地节点和海洋节点的时候直接跳过。

代码如下:

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[][] grid,int x,int y){for(int i=0;i<4;i++){int nextX=x+dir[i][0];int nextY=y+dir[i][1];if(nextX<0 || nextY<0 || nextX>=grid.length || nextY>=grid[0].length) continue;if(!visited[nextX][nextY] && grid[nextX][nextY]==1){visited[nextX][nextY]=true;dfs(visited,grid,nextX,nextY);}}}public static void main (String[] args) {//构建地图Scanner scan = new Scanner(System.in);int n=scan.nextInt();int m=scan.nextInt();int[][] grid=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){grid[i][j]=scan.nextInt();}}//判断是否为岛屿int result=0;boolean[][] visited=new boolean[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(!visited[i][j] && grid[i][j]==1){result++;visited[i][j]=true;dfs(visited,grid,i,j);}}}System.out.println(result);}
}

99.岛屿数量 广搜

注意:要在节点加入队列时就标记走过,如果从队列拿出来的时候再标记走过就会导致很多节点重复加入队列。

广度搜索使用队列存放下一层搜索的节点,与DFS的区别是不需要调用自身,把队列中的元素遍历完即可。

代码如下:

import java.util.*;
class Pair{int x;int y;public Pair(int x, int y) {this.x = x;this.y = y;}
}public class Main{//定义前进的方向public static int[][] dir={{0,1},{1,0},{-1,0},{0,-1}};public static void bfs(boolean[][] visited,int[][] grid,int x,int y){Queue<Pair> queue=new LinkedList<>();queue.add(new Pair(x,y));visited[x][y]=true;while(!queue.isEmpty()){Pair cur=queue.poll();int curX=cur.x;int curY=cur.y;for(int i=0;i<4;i++){int nextX=curX+dir[i][0];int nextY=curY+dir[i][1];if(nextX<0 || nextY<0 || nextX>=grid.length || nextY>=grid[0].length) continue;if(!visited[nextX][nextY] && grid[nextX][nextY]==1){queue.add(new Pair(nextX,nextY));visited[nextX][nextY]=true;}}}}public static void main (String[] args) {Scanner scan = new Scanner(System.in);int n=scan.nextInt();int m=scan.nextInt();int[][] grid=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){grid[i][j]=scan.nextInt();}}int result=0;boolean[][] visited=new boolean[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(!visited[i][j] && grid[i][j]==1){result++;bfs(visited,grid,i,j);}}}System.out.println(result);}
}

100.岛屿的最大面积

思路:只需要在标记一个陆地节点周边所有陆地节点时对这个岛屿的面积计数即可,最后比较获得最大的面积。使用全局静态变量count来计数。

dfs只处理下一个节点,即在主函数遇到岛屿就计数为1,dfs处理接下来的相邻陆地.

代码如下:

import java.util.Scanner;
public class Main{//定义前进的方向public static int[][] dir={{0,1},{1,0},{-1,0},{0,-1}};public static int count;//深度搜索函数public static void dfs(boolean[][] visited,int[][] grid,int x,int y){for(int i=0;i<4;i++){int nextX=x+dir[i][0];int nextY=y+dir[i][1];if(nextX<0 || nextY<0 || nextX>=grid.length || nextY>=grid[0].length) continue;if(!visited[nextX][nextY] && grid[nextX][nextY]==1){visited[nextX][nextY]=true;count++;dfs(visited,grid,nextX,nextY);}}}public static void main (String[] args) {//构建地图Scanner scan = new Scanner(System.in);int n=scan.nextInt();int m=scan.nextInt();int[][] grid=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){grid[i][j]=scan.nextInt();}}//判断是否为岛屿boolean[][] visited=new boolean[n][m];int result=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(!visited[i][j] && grid[i][j]==1){count=1;visited[i][j]=true;dfs(visited,grid,i,j);}if(count>result) result=count;}}System.out.println(result);}
}
http://www.hkea.cn/news/924016/

相关文章:

  • 有没有兼职做设计的网站吗知名网络软文推广平台
  • 数据百度做网站好用吗米拓建站
  • 网站维护运营怎么做搜索引擎优化通常要注意的问题有
  • 圆梦科技专业网站建设恶意点击软件有哪些
  • 如何做vip电影解析网站竞价恶意点击器
  • 开发简单小程序公司深圳网站优化哪家好
  • 网站开发劣势搜索引擎排名优化
  • 桂林网站优化公司企业网络营销顾问
  • 上海外贸出口代理公司排名搜索引擎优化的主要工作有
  • 一般做企业网站需要什么资料广告咨询
  • 广州网站建设兼职网站为什么要做seo
  • 中企动力官网 网站怎么在平台上做推广
  • 教育培训网站建设方案广告宣传费用一般多少
  • 计算机网站设计论文营销排名seo
  • 源码资源国内专业seo公司
  • 丽水微信网站建设报价免费精准客源
  • 广东建设工程中标公示网站google搜索引擎优化
  • 南宁老牌网站建设公司正版google下载
  • 网站做信用认证有必要吗微信朋友圈推广平台
  • 电子政务网站建设要求百度关键词规划师
  • 博客网站开发毕设免费大数据分析网站
  • 深圳教育平台网站建设好消息疫情要结束了
  • 国外设计文章的网站淘宝代运营靠谱吗
  • 市桥网站建设sem论坛
  • 猎头公司是做什么的可靠吗排名优化外包公司
  • 扶贫网站建设关键词查询神器
  • 沈阳酒店企业网站制作公司2023年9月疫情又开始了吗
  • 厦门专业网站建设如何快速推广一个新产品
  • 帮人做传销网站违法吗seo网站排名助手
  • 如何做优品快报下的子网站营销型网站建设目标