腐爛的橘子

2021-10-03 13:27:23 字數 1118 閱讀 2079

##描述

給定的網格中,每個單元格可以有以下三個值之一:

值 0 代表空單元格;

值 1 代表新鮮橘子;

值 2 代表腐爛的橘子。

每分鐘,任何與腐爛的橘子(在 4 個正方向上)相鄰的新鮮橘子都會腐爛。

返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 -1

##解題思路:

1、bfs grid是乙個二維陣列,維護乙個裝壞橘子佇列,和好橘子的sum,統計壞橘子的位置,存到點佇列中。統計好橘子的個數;如果一開始就沒有好橘子就返回0。一分鐘重新整理一次佇列,佇列元素四周檢視一邊,更新四周,然後pop掉這個元素,等這一輪重新整理完事之後,新的佇列元素也在此過程中更新的出來,再更新時間再更新壞橘子的佇列,等好橘子都沒了的時候返回所求時間ret。等到佇列沒有壞橘子時,跳出迴圈,返回-1

2、direction 四個方向

3、 for(auto & dir:direction)   // 是個迴圈dir和direction 是一樣的變數,且是其中之一。 :遍歷

4、 auto關鍵字 

##**:

class solution );

vector> direction=,,,};

int ret=0;

if(fresh==0)

return 0;

while(!que.empty())

ret++;

int size=que.size();

for(int i=0;iauto pos=que.front();

que.pop();//

for(auto & dir:direction)

int x=pos.first+dir.first;  //此處的first,是乙個數,不用括號

int y=pos.second+dir.second;

if(x>=0 && x=0 && yfresh--;

grid[x][y]=2;

que.push();

if(fresh==0)

return ret;

return -1;

腐爛的橘子

題目描述 在給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1。思路分析 class so...

腐爛的橘子

dfs 深度優先搜尋 和 bfs 廣度優先搜尋 它們各有不同的適應場景。題目要求 返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。實際上就是求腐爛橘子到所有新鮮橘子的最短路徑。那麼這道題使用 bfs,應該是毫無疑問的了 這道題的主要思路是 1.一開始,我們找出所有腐爛的橘子,將它們放入佇列,...

習題 腐爛的橘子

題目描述 在給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1。分析 先找到所有的腐爛橘子...