题解 | #疯牛病I#
疯牛病I
https://www.nowcoder.com/practice/2066902a557647ce8e85c9d2d5874086
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pasture int整型二维数组 * @param k int整型 * @return int整型 */ public int healthyCows (int[][] pasture, int k) { if(k == 0){ //k为0时退出递归并统计正常牛数目 int flag = 0; for (int[] i : pasture){ for (int j : i){ if(j == 1){ flag++; } } } return flag; } //正常遍历并将即将变为疯牛的牛先标记为3而不是2,避免干扰循环 for (int i = 0; i < pasture.length;i++){ for (int j = 0;j< pasture[i].length; j++){ if(pasture[i][j]==2){ if(i-1>=0&&pasture[i-1][j]==1){ pasture[i-1][j]=3; } if(i+1<pasture.length&&pasture[i+1][j]==1){ pasture[i+1][j]=3; } if(j-1>=0&&pasture[i][j-1]==1){ pasture[i][j-1]=3; } if(j+1<pasture[i].length&&pasture[i][j+1]==1){ pasture[i][j+1]=3; } } } } //牛牛变异为2 for (int i = 0; i < pasture.length;i++){ for (int j = 0;j< pasture[i].length; j++){ if(pasture[i][j] == 3){ pasture[i][j]=2; } } } return healthyCows(pasture, k-1); // write code here } }