一片海洋中的陸地

2021-06-30 16:49:42 字數 974 閱讀 6938

這個題目是很霸氣的,這是一道演算法題。

給定乙個棋盤,n*n大小,可以把它想象成一片海洋,每個格仔裡面是0或者1,0代表海水,1代表土壤,求海洋中陸地的塊數。

今晚吃晚飯時聽學長分享了這個面試題,於是回來尋思著怎麼做。

說實話,這個題目昨晚和學長交談時有dfs的想法,回來卻不敢去實現,看了leetcode上有一道一模一樣的題目,看了別人的分享答案。

這個問題就是遍歷每乙個節點【把每個棋格當做是節點吧】,對每個節點發起dfs,如果是1就把這個1置為0,然後對這個節點的四周是1的節點進行dfs,搜完之後把結果

result++。

上**:

class solution }}

return ret;

}void dfs(vector> &grid, int i, int j, int m, int n)

if(top->x < m-1 && grid[top->x+1][top->y] == '1')

if(top->y > 0 && grid[top->x][top->y-1] == '1')

if(top->y < n-1 && grid[top->x][top->y+1] == '1')

stk.pop();}}

};

這個是非遞迴版本。**中dfs查詢是把節點前後左右的1壓棧,一一處理,直到棧裡已經沒有1處理了,所以是乙個很容易想到的處理方法,對了,別忘了,處理完乙個節點後pop出棧。

接下來上遞迴版本的**:

class solution }}

return ret;

}void dfs(vector> &grid, int i, int j, int m, int n)

};

這種遞迴版本比較簡單,把節點置為0後對周圍是1的節點發起dfs。

好了,感謝作者,雖然我忘記了是哪個**,但是很感謝。

buaacoding 海洋與陸地

本來乙個很簡單的題因為乙個極其愚蠢的錯誤卡了非常久 輸入 輸入n 1行,第一行為正整數n,表示地圖的大小,n 100 之後n行每行輸入n個字元,由 和 組成,其中 表示海洋,表示陸地 兩塊陸地在上下左右四個方向上有間接接壤視為同屬於乙個大陸 例如 視為擁有兩塊大陸 輸出 有多少塊大陸 輸入樣例 5 ...

縮小的陸地

問題描述 fred正在考慮在路易斯安那州找一塊土地在上面建造他的房子。在調查過程中,他了解到路易斯安那州的陸地正以每年50平方英里的速度縮小,原因是密西西比河對陸地的侵蝕。由於fred希望他的餘生都能居住在這所房子裡,所以他需要知道他的土地是否會被河水侵蝕。fred做了更多的研究後發現,正在損失的陸...

尋找自己的一片自留地

大學生活已經過去了大半。仔細地回想自己所走過的路,經歷了也不少,不過就是覺得沒有真正的找到屬於我自己的一片自留地。宿舍裡有個算是比較好的朋友,說比較好,其實也不是很好,因為彼此的性格迥異,他想要的是出世,而我尋求的是入世。他看淡朋友關係,而我卻是過於重視了,對朋友的依賴比較強,什麼事都希望能夠交流,...