//首先需要佇列的相關函式
typedef
struct
queue;
//佇列基本元素
//佇列的建立
queue *
creat
(int size)
//入隊函式,出隊函式
void
inqueue
(int x,
int y,queue * queue)
void
dequeue
(queue* queue,
int*a)
//佇列判空函式
bool isempty
(queue* queue)
//佇列釋放函式
void
free
(queue* queue)
intorangesrotting
(int
** grid,
int gridsize,
int* gridcolsize)
//初始化佇列
queue* q =
creat
(size)
;//第二步,統計壞的併入佇列,並且看看是否好的為零
for(
int i =
0;i}if
(sum ==0)
return0;
int level=q->tail;
//記下同一時間壞的,用於鑑別
while(!
isempty
(q))
dequeue
(q,index);if
(index[0]
-1>=
0&& grid[index[0]
-1][index[1]
]==1)
if(index[0]
+1< gridsize && grid[index[0]
+1][index[1]
]==1)
if(index[1]
-1>=
0&& grid[index[0]
][index[1]
-1]==
1)if(index[1]
+1< gridcolsize[index[0]
]&& grid[index[0]
][index[1]
+1]==
1)}free
(q);
free
(index)
;for
(int i =
0;i < gridsize;i ++
)for
(int j =
0;j < gridcolsize[i]
;j ++)if
(grid[i]
[j]==1)
return-1
;return time;
}
腐爛的橘子
題目描述 在給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1。思路分析 class so...
腐爛的橘子
描述 給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1 解題思路 1 bfs grid是...
腐爛的橘子
dfs 深度優先搜尋 和 bfs 廣度優先搜尋 它們各有不同的適應場景。題目要求 返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。實際上就是求腐爛橘子到所有新鮮橘子的最短路徑。那麼這道題使用 bfs,應該是毫無疑問的了 這道題的主要思路是 1.一開始,我們找出所有腐爛的橘子,將它們放入佇列,...