题解 | #疯牛病I#

题目解答方法的文字分析

  1. 二维数组的遍历与操作:题目中给出一个 m x n 的牧场,需要遍历整个二维数组,并进行相应的操作。

  2. 广度优先搜索(BFS):题目描述了疯牛病在牧场中的传播过程。BFS是一种图遍历算法,可以用来模拟疯牛病的传播过程。

  3. 健康牛感染的条件判断:题目规定了健康牛感染的条件,即患病牛周围的四个方向上的健康牛会被感染,需要根据这个条件进行判断。

题目考察的知识点

在题目解答方法的文字分析中,我们先通过遍历整个牧场,将患有疯牛病的牛的位置保存到队列中。然后,使用BFS来模拟疯牛病的传播过程,每次从队列中取出一个牛,检查其周围的健康牛并进行感染。再统计剩余健康牛的数量。

本题解析所用的编程语言

本题解析所用的编程语言是JavaScript。JavaScript是一种广泛应用于Web开发的脚本语言,拥有丰富的内置函数和语法糖,适用于多种场景,并且在前端、后端以及移动端开发中都有广泛的应用。在本题中,使用JavaScript来实现题目的解答过程。

完整且正确的编程代码

function healthyCows(pasture, k) {
  const m = pasture.length;
  const n = pasture[0].length;
  const queue = [];

  // 遍历牧场,将患有疯牛病的牛加入队列
  for (let i = 0; i < m; i++) {
    for (let j = 0; j < n; j++) {
      if (pasture[i][j] === 2) {
        queue.push([i, j]);
      }
    }
  }

  // 定义相邻方向的偏移量
  const directions = [[-1, 0], [1, 0], [0, -1], [0, 1]];

  // 模拟疯牛病的传播过程
  for (let t = 0; t < k; t++) {
    const size = queue.length;

    for (let i = 0; i < size; i++) {
      const [x, y] = queue.shift();

      for (const [dx, dy] of directions) {
        const newX = x + dx;
        const newY = y + dy;

        // 判断新位置是否在牧场范围内且为健康的牛
        if (newX >= 0 && newX < m && newY >= 0 && newY < n && pasture[newX][newY] === 1) {
          // 将健康牛感染,并将感染后的牛加入队列
          pasture[newX][newY] = 2;
          queue.push([newX, newY]);
        }
      }
    }
  }

  // 统计剩余的健康牛的数量
  let healthyCount = 0;
  for (let i = 0; i < m; i++) {
    for (let j = 0; j < n; j++) {
      if (pasture[i][j] === 1) {
        healthyCount++;
      }
    }
  }

  return healthyCount;
}
题解 | 前端刷题 文章被收录于专栏

题目考察的知识点 题目解答方法的文字分析 本题解析所用的编程语言 完整且正确的编程代码

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务