模拟算法,模拟腐烂的过程
class Solution994 {
public static void main(String[] args) {
Solution994 solution994 = new Solution994();
int i = solution994.orangesRotting(new int[][]{new int[]{1, 2}});
System.out.println(i);
}
public int orangesRotting(int[][] grid) {
if (!hasXinxian(grid))
return 0;
for (int i = 1; i < Integer.MAX_VALUE; i++) {
if (!rot(grid, i)) {
if (hasXinxian(grid))
return -1;
else
return i - 1;
}
}
return -1;
}
public boolean hasXinxian(int[][] grid) {
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
if (grid[i][j] == 1)
return true;
}
}
return false;
}
public boolean rot(int[][] grid, int cishu) {
boolean result = false;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
if (grid[i][j] >= 2 && grid[i][j] < cishu + 2) {
if (i - 1 >= 0 && grid[i - 1][j] == 1) {
grid[i - 1][j] = cishu + 2;
result = true;
}
if (i + 1 < grid.length && grid[i + 1][j] == 1) {
grid[i + 1][j] = cishu + 2;
result = true;
}
if (j - 1 >= 0 && grid[i][j - 1] == 1) {
grid[i][j - 1] = cishu + 2;
result = true;
}
if (j + 1 < grid[i].length && grid[i][j + 1] == 1) {
grid[i][j + 1] = cishu + 2;
result = true;
}
}
}
}
return result;
}
}
模拟算法:腐烂水果扩散过程分析
这篇博客探讨了一种模拟算法,用于模拟腐烂水果的扩散过程。通过一个二维网格,算法检查并传播腐烂状态。当没有新鲜水果时,算法返回腐烂所需时间。如果无法找到腐烂路径,则返回-1。博客详细介绍了算法的主要方法,包括判断是否存在腐烂和进行腐烂状态更新的逻辑。
263

被折叠的 条评论
为什么被折叠?



