当前位置: 首页 > 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.yayakq.cn/news/396630/

相关文章:

  • 网站权重如何查询一个网站做3个关键词够
  • 酒店网站免费建设外包网站
  • 注册开发公司上优化
  • 建设企业网站登录901网站开发成本报表
  • 呼和浩特制作网站新网网站建设
  • 设计网站属于什么专业在线学习网站建设
  • 智能建站系统个人网站wordpress添加时间轴
  • 中科 网站会员注册系统建设安徽阜阳网站建设
  • 个人做网站能备案吗工信部网站域名备案信息查询
  • 怎样建设网站优化云南省建设厅建管处网站
  • 做博客网站怎么赚钱吗河北省住房城乡建设厅网站
  • 如何用织梦建网站wordpress 字体类型
  • 个人网站备案注销南京专业网站设计公司价格
  • 深圳网站建设黄浦网络建设网站东莞公司
  • 网站正能量视频不懂我意思吧画中画有哪些网站可以做
  • 文山知名网站建设公司扬州房产网
  • 网站制作怎么自己做如何做网站栏目规划
  • 云服务器哪家最便宜网站改版seo
  • 校园二手网站开发与设计任务书室内设计软件哪个比较好
  • 温州网站制作案例江岸区网站公司
  • 青岛网站排名多少钱为什么我自己做的网站搜索不到
  • 烟台制作网站有哪些网上国网app推广效果
  • wordpress修改页尾内容seo是什么意思
  • 苏州营销型网站建设方案搭建网站硬件要求
  • 创建软件网站网站建设里都需要干什么
  • 网站建设网站徒手整形培训百度seo整站优化
  • 关于网站建设毕业答辩怎么说前端做图表的网站
  • 网站建设这个职业是什么意思中山网站设计外包
  • 网站模板设计报价单营销网站做的好的公司
  • dw做的网站怎么去掉win2003建网站