杭电1241java实现dfs
問題描述
GeoSurvComp地質(zhì)調(diào)查公司負(fù)責(zé)檢測地下油藏。 GeoSurvComp一次與一個大的矩形區(qū)域一起工作,并創(chuàng)建一個網(wǎng)格,將網(wǎng)格劃分為多個方塊。然后分別分析每個地塊,使用傳感設(shè)備確定該地塊是否含有油。含油的情節(jié)被稱為口袋。如果兩個口袋相鄰,則它們是同一個油藏的一部分。油藏可能相當(dāng)大,可能含有大量的口袋。你的工作是確定網(wǎng)格中包含多少個不同的油藏。
輸入
輸入文件包含一個或多個網(wǎng)格。每個網(wǎng)格以含有m和n的行開始,網(wǎng)格中的行和列的數(shù)量由一個空格分隔。如果m = 0,則表示輸入結(jié)束;否則1 <= m <= 100和1 <= n <= 100.之后是每行有n行的m行(不包括行尾字符)。每個字符對應(yīng)一個圖,既可以代表沒有油的`*’,也可以代表一個油袋。
產(chǎn)量
對于每個電網(wǎng),輸出不同油量的數(shù)量。如果兩個不同的口袋是水平,垂直或?qū)窍噜彽?#xff0c;則它們是同一個油藏的一部分。一個油藏不會超過100個口袋。
示例輸入
1 1
*
3 5
- @ * @ *
** ** @ - @ * @ *
1 8
@@ **** @ *
5 5
**** @ - @@ * @
- @ ** @
@@@ * @
@@ ** @
0 0
示例輸出
0
1
2
2
思路:剛開始我以為是常規(guī)搜索題,當(dāng)時想著遍歷,標(biāo)記,找相鄰的,周圍的,但是卻發(fā)現(xiàn)可能后出現(xiàn)的會連結(jié)已經(jīng)遍歷過的,并且那個油田也不好表示,不能超過100不好判斷。后來就看了別人學(xué)習(xí)了一下?lián)Q了一種思路,找到油田的那個點開始遍歷,遍歷周圍和他成為一個油田的所有滿足條件的(包括100),把遍歷過的點設(shè)為不可遍歷。找到一個@就dfs一次,油田數(shù)量就增加一次。注意參數(shù)的重置問題。
代碼如下:
總結(jié)
以上是生活随笔為你收集整理的杭电1241java实现dfs的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杭电1180java实现(bfs)
- 下一篇: 杭电1016Java实现