12
返回列表 发新帖
楼主: 我是真笨蛋
跳转到指定楼层
上一主题 下一主题
收起左侧

qualtrics 面筋

🔗
oumizx 2020-7-10 06:49:23 | 只看该作者
全局:
又想了想之前写的不大对,BFS的step是一个地雷半径内所有的点,修改之后的代码。
  1. public class Bomb {

  2.     int[][] DIRS = new int[][]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}};

  3.     public int solution(int[][] grid, int row, int col) {
  4.         Queue<int[]> q = new LinkedList<>();
  5.         q.add(new int[]{row, col});
  6.         boolean[][] visited = new boolean[grid.length][grid[0].length];
  7.         visited[row][col] = true;
  8.         int res = 1;
  9.         while (!q.isEmpty()) {
  10.             int size = q.size();
  11.             for (int i = 0; i < size; i++) {
  12.                 int[] pos = q.remove();
  13.                 int r = pos[0];
  14.                 int c = pos[1];
  15.                 int range = grid[r][c];
  16.                 for (int j = r - range; j <= r + range; j++) {
  17.                     for (int k = c - range; k <= c + range; k++) {
  18.                         if (j < 0 || j >= grid.length || k < 0 || k >= grid[0].length || (j - r) * (j - r) + (k - c) * (k - c) > range * range || grid[j][k] == 0 || visited[j][k]) continue;
  19.                         res++;
  20.                         visited[j][k] = true;
  21.                         q.add(new int[]{j, k});
  22.                     }
  23.                 }
  24.             }
  25.         }

  26.         return res;
  27.     }

  28.     public static void main(String[] args) {
  29.         Bomb solution = new Bomb();
  30.         int[][] grid = new int[][]{{1, 2, 0, 0},{0, 0, 1, 0}, {0, 2, 0, 0}, {1, 0, 0, 1}};
  31.         System.out.println(solution.solution(grid, 0, 0));
  32.     }
  33. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表