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

百度收录万网空间的网站需要多久网页数据库系统怎么做

百度收录万网空间的网站需要多久,网页数据库系统怎么做,wordpress官方主题哪个好,友情链接的形式网格图–Day04–网格图DFS–2684. 矩阵中移动的最大次数,1254. 统计封闭岛屿的数目,130. 被围绕的区域 今天要训练的题目类型是:【网格图DFS】,题单来自灵茶山艾府。 适用于需要计算连通块个数、大小的题目。 部分题目做法不止一种…

网格图–Day04–网格图DFS–2684. 矩阵中移动的最大次数,1254. 统计封闭岛屿的数目,130. 被围绕的区域

今天要训练的题目类型是:【网格图DFS】,题单来自@灵茶山艾府。

适用于需要计算连通块个数、大小的题目。

部分题目做法不止一种,也可以用 BFS 或并查集解决。

2684. 矩阵中移动的最大次数

方法:DFS

思路:

class Solution {private int res;private void dfs(int[][] grid, int i, int j) {res = Math.max(res, j);// 已经到头了if (res == grid[0].length - 1) {return;}for (int k = i - 1; k <= i + 1; k++) {if (k >= 0 && k < grid.length && grid[k][j + 1] > grid[i][j]) {dfs(grid, k, j + 1);}}// 标记走过(等于记忆化)grid[i][j] = -1;}public int maxMoves(int[][] grid) {int n = grid.length;int m = grid[0].length;for (int i = 0; i < grid.length; i++) {dfs(grid, i, 0);}return res;}
}

方法:动态规划

思路:

class Solution {public int maxMoves(int[][] grid) {int n = grid.length;int m = grid[0].length;// 初始化DP数组,存储从当前位置出发的最大移动次数int[][] f = new int[n][m];// 从右向左遍历列// 更新需要grid[i][j], 但是每次实际更新的是dp[i][j-1],所以要求j>0.最右列无需管,因为没得跳for (int j = m - 1; j > 0; j--) {// 遍历当前列的所有行for (int i = 0; i < n; i++) {// 检查当前位置(i,j)能到达的左侧三个位置(i-1,j-1)、(i,j-1)、(i+1,j-1)for (int k = i - 1; k <= i + 1; k++) {// 边界检查:k必须在有效行范围内,且左侧位置值小于当前位置值if (k >= 0 && k < n && grid[k][j - 1] < grid[i][j]) {// 更新左侧位置的最大移动次数f[k][j - 1] = Math.max(f[k][j - 1], f[i][j] + 1);}}}}// 找出第一列的最大移动次数(所有可能的起始位置)int res = 0;for (int i = 0; i < n; i++) {res = Math.max(res, f[i][0]);}return res;}
}

1254. 统计封闭岛屿的数目

思路:

统计不与边界接触的岛屿

每层dfs返回一个布尔变量,一旦遇到边界,就返回false,一直向上返回。

class Solution {// 题意:统计不与边界接触的岛屿private final int[][] DIRS = new int[][] { { 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 } };private boolean dfs(int[][] grid, int i, int j) {boolean flag = true;// 标记已访问grid[i][j] = 2;for (int k = 0; k < DIRS.length; k++) {int x = i + DIRS[k][0];int y = j + DIRS[k][1];// 下一个格子越界了,就是岛屿接触到边界了,flag赋值falseif (x < 0 || x >= grid.length || y < 0 | y >= grid[0].length) {flag = false;continue;}if (grid[x][y] == 0) {// 拼接下层的flag,全部格子都不能接触边界// 踩坑:不能flag = flag && dfs(grid, x, y),会造成短路,无法触发下一层dfsflag = dfs(grid, x, y) && flag;}}return flag;}public int closedIsland(int[][] grid) {int n = grid.length;int m = grid[0].length;int count = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (grid[i][j] == 0 && dfs(grid, i, j)) {// 返回来的标志全是truecount++;}}}return count;}
}

130. 被围绕的区域

思路:

借用上题的代码。先dfs一次判断是否接触,再dfs多一次进行修改。

因为第一次dfs的时候,不能直接改原网格,所以要增加一个布尔数组visited来辅助。

主要逻辑:如果是O,且没有被dfs过,那么dfs它。如果dfs之后发现没有接触边界——那么执行dfs2删除

class Solution {private final int[][] DIRS = new int[][] { { 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 } };// 判断岛屿是否与“边界”接触,private boolean dfs(char[][] grid, int i, int j, boolean[][] visited) {// 标记已走过,这是给dfs函数用的visited[i][j] = true;// 这个flag是用来标记,是否接触“边界”的boolean flag = true;for (int k = 0; k < DIRS.length; k++) {int x = i + DIRS[k][0];int y = j + DIRS[k][1];// 如果接触边界,falseif (x < 0 || x >= grid.length || y < 0 | y >= grid[0].length) {flag = false;continue;}// 探索下一个没走过的Oif (grid[x][y] == 'O' && !visited[x][y]) {// 拼接下层的flag,全部格子都不能接触边界// 踩坑:不能flag = flag && dfs(grid, x, y),会造成短路,无法触发下一层dfsflag = dfs(grid, x, y, visited) && flag;}}return flag;}// 再dfs2这个岛,这次把每个O变成Xprivate void dfs2(char[][] grid, int i, int j) {if (i < 0 || i >= grid.length || j < 0 | j >= grid[0].length || grid[i][j] == 'X') {return;}grid[i][j] = 'X';for (int k = 0; k < DIRS.length; k++) {int x = i + DIRS[k][0];int y = j + DIRS[k][1];dfs2(grid, x, y);}}public void solve(char[][] board) {int n = board.length;int m = board[0].length;boolean[][] visited = new boolean[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {// 如果是O,且没有被dfs过,且dfs之后发现没有接触边界——那么执行dfs2删除if (board[i][j] == 'O' && !visited[i][j] && dfs(board, i, j, visited)) {dfs2(board, i, j);}}}return;}
}
http://www.dtcms.com/a/543471.html

相关文章:

  • 外贸网站都有哪些wordpress 段落背景颜色
  • 深圳招聘网站大全井研移动网站建设
  • 网站建设横条公司官网是什么意思
  • 个人可以建设网站吗做网站优化的协议书
  • 做网站的必要条件公司网站设计模板
  • 多导航织梦网站模板下载在哪里进行网站域名的实名认证
  • 自助建设响应式网站建立保密工作风险评估监测预警
  • 西安网站快速备案公司怎么在百度上推广
  • 一般网站建设大概需要多少钱百度推广广告收费标准
  • 护卫神做的网站访问全媒体运营师培训费用
  • 网站改版需要多久怎样可以提升自己的网站
  • 企业网站模板网 凡建站企业logo设计方案
  • 中卫市建设局网站宁波建设网站制作
  • 黄页88网站wordpress支付
  • 建设一个视频网站首页icp备案官网查询
  • 网站建设图书馆管理系统向国外卖货的电商平台
  • 做网站公司好屏蔽wordpress头像
  • 华宁网站建设在网站设计公司上班好吗
  • 手机医疗网站模板西蔵自治区建设厅网站
  • 寻找石家庄网站建设重庆白云seo整站优化
  • 内网网站建设方面政策重庆seo排名收费
  • 网站建设的电话销售好做不百姓网官网首页
  • 电商网站商品详情页高端网站开发的公司
  • 做啥网站赚钱?快速网站价格
  • 东莞响应式网站实力乐云seo网页设计与制作需要学什么软件
  • 专业企业网站开发联系电话厦门市市政集团官网
  • 长沙品牌网站建设实力强外贸企业网络推广
  • 电商网站前端制作分工wordpress 标签调用
  • 济南便宜企业网站建设费用做网站是否过时了
  • 如何开发手机网站上海企业网站制作方法