审题:
本题需要我们判断苹果是否可以完全腐烂,若可以完全腐烂,那么最短腐烂的所需时间是多少
思路:
方法一:多源BFS
首先我们分析腐烂过程,第一批腐烂苹果开始扩散,然后第二批腐烂苹果继续扩散,直到没有可以腐烂的苹果或者没有新鲜苹果为止
那么我们就可以通过多源bfs来模拟多个苹果一起腐烂并加入新一批腐烂苹果的过程
解题:
(1)变量创建
我们需要利用队列存储当前批次腐烂的苹果以及下一批次腐烂的苹果
freshapple的记录是为了最后判断是否有苹果永不腐烂
(2)将腐烂苹果加入队列,并记录新鲜苹果的数量
我们将腐烂苹果加入队列,遇到新鲜苹果就让freshapple++
(3)创建方向数组,便于进行上下左右移动传播
方向数组用于保存四个方向的移动坐标,实现扩散的目的
(4)进行bfs搜索,模拟腐烂过程
1.我们进行腐烂模拟的前提条件是还有待腐烂传播的苹果以及还有新鲜苹果。
2.第一步是将当前批次的腐烂苹果数量记录下来,然后对这些苹果依次进行上下左右传播,若遇到新鲜苹果就改为腐烂苹果,新鲜苹果数量--,并将它的坐标加入腐烂队列中
3.每进行一批传播就将minute++
(5)判断情况进行返回
如果还有新鲜苹果就返回-1,否则返回分钟数
腐烂的苹果_牛客题霸_牛客网