##描述
給定的網格中,每個單元格可以有以下三個值之一:
值 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。分析 先找到所有的腐爛橘子...