華為OD機(jī)試- 戰(zhàn)場(chǎng)索敵
有一個(gè)大小是N*M的戰(zhàn)場(chǎng)地圖,被墻壁 '#' 分隔成大小不同的區(qū)域,上下左右四個(gè)方向相鄰的空地 '.',屬于同一個(gè)區(qū)域,只有空地上可能存在敵人'E',請(qǐng)求出地圖上總共有多少區(qū)域里的敵人數(shù)小于K。
輸入描述
第一行輸入為N.M.K;
N表示地圖的行數(shù),M表示地圖的列數(shù),K表示目標(biāo)敵人數(shù)量
N,M<=100
之后為一個(gè)NxM大小的字符數(shù)組
輸出描述
敵人數(shù)小于K的區(qū)域數(shù)量
示例1:
輸入
3 5 2
..#EE
E.#E.
###..
輸出
1
說(shuō)明
地圖被墻壁分為兩個(gè)區(qū)域,左邊區(qū)域有1個(gè)敵人,右邊區(qū)域有3個(gè)敵人,符合條件的區(qū)域數(shù)量是1
思路
1:刷題庫(kù)刷多了應(yīng)該有肌肉記憶了吧,明顯一個(gè)DFS搜索類(lèi)的問(wèn)題。
2:若某個(gè)位置未被搜索過(guò)且不是'#',那么可以開(kāi)始進(jìn)行DFS遍歷,單個(gè)源頭的搜索區(qū)域,該區(qū)域的'E'的(敵軍)數(shù)量+1。遍歷完成后,對(duì)總敵軍數(shù)量<k,則result + 1。
3:最好先別看我的題解,直接手?jǐn)]一把看看,對(duì)于刷題多一點(diǎn)的同學(xué)來(lái)說(shuō),應(yīng)該不是難題,模板都應(yīng)該記住了。
Java 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131205246
Python實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131288271
C++ 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131288293
JavaScript實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131288328
C實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/129190260