華為OD機試-宜居星球改造計劃
2XXX年,人類通過對火星的大氣進行宜居改造分析,使得火星已在理論上具備人類宜居的條件,由于技術(shù)原因,無法一次性將火星大氣全部改造,只能通過局部處理形式,假設將火星待改造的區(qū)域為row * column的網(wǎng)格每個網(wǎng)格有3個值,宜居區(qū)、可改造區(qū)、死亡區(qū),使用YES、NO、NA代替,YES表示該網(wǎng)格已經(jīng)完成大氣改造,NO表示該網(wǎng)格未進行改造,后期可進行改造,NA表示死亡區(qū),不作為判斷是否改造完成的宜居,無法穿過
初始化下,該區(qū)域可能存在多個宜居區(qū),并且每個宜居區(qū)能同時在每個太陽日單位向上下左右四個方向的相鄰格子進行擴散,自動將4個方向相鄰的真空區(qū)改造成宜居區(qū);請計算這個待改造區(qū)域的網(wǎng)格中,可改造區(qū)是否能全部變成宜居區(qū),如果可以,則返回改造的太陽日天數(shù),不可以則返回-1。
輸入描述:
輸入row*column個網(wǎng)格數(shù)據(jù),每個網(wǎng)格值枚舉值如下: YES,NO,NA,樣例:
YES YES NO
NO NO NO
NA NO YES
輸出描述:
可改造區(qū)是否能全部變成宜居區(qū),如果可以,則返回改造的太陽日天數(shù),不可以則返回-1.
補充說明:
grid[i]只有3種情況,YES、NO、NA
row == grid.length, column == grid[i].length, 1 <= row, column <= 8
示例1
輸入:
YES YES NO
NO NO NO
YES NO NO
輸出:
2
說明:
經(jīng)過2個太陽日,完成宜居改造.
示例2
輸入:
YES NO NO NO
NO NO NO NO
NO NO NO NO
NO NO NO NO
輸出:
6
說明:
經(jīng)過6個太陽日,可完成改造
示例3
輸入:
NO NA
輸出:
-1
說明:
無改造初始條件,無法進行改造
示例4
輸入:
YES NO NO YES
NO NO YES NO
NO YES NA NA
YES NO NA NO
輸出:
-1
說明:
右下角的區(qū)域,被周邊三個死亡區(qū)擋住,無法實現(xiàn)改造
Java 實現(xiàn):https://renjie.blog.csdn.net/article/details/130756210
Python實現(xiàn):https://renjie.blog.csdn.net/article/details/130803672
C++ 實現(xiàn):https://renjie.blog.csdn.net/article/details/130803688
JavaScript實現(xiàn):https://renjie.blog.csdn.net/article/details/130803715
C實現(xiàn):https://renjie.blog.csdn.net/article/details/130803748