題目描述:
病毒擴散得很快,現在你的任務是盡可能地通過安裝防火牆來隔離病毒。
假設世界由二維矩陣組成,0 表示該區域未感染病毒,而 1 表示該區域已感染病毒。可以在任意 2 個四方向相鄰單元之間的共享邊界上安裝乙個防火牆(並且只有乙個防火牆)。
每天晚上,病毒會從被感染區域向相鄰未感染區域擴散,除非被防火牆隔離。現由於資源有限,每天你只能安裝一系列防火牆來隔離其中乙個被病毒感染的區域(乙個區域或連續的一片區域),且該感染區域對未感染區域的威脅最大且保證唯一。
你需要努力使得最後有部分區域不被病毒感染,如果可以成功,那麼返回需要使用的防火牆個數; 如果無法實現,則返回在世界被病毒全部感染時已安裝的防火牆個數。
示例 1:
輸入: grid =
[[0,1,0,0,0,0,0,1],
[0,1,0,0,0,0,0,1],
[0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0]]
輸出: 10
說明:一共有兩塊被病毒感染的區域: 從左往右第一塊需要 5 個防火牆,同時若該區域不隔離,晚上將感染 5 個未感染區域(即被威脅的未感染區域個數為 5);
第二塊需要 4 個防火牆,同理被威脅的未感染區域個數是 4。因此,第一天先隔離左邊的感染區域,經過一晚後,病毒傳播後世界如下:
[[0,1,0,0,0,0,1,1],
[0,1,0,0,0,0,1,1],
[0,0,0,0,0,0,1,1],
[0,0,0,0,0,0,0,1]]
第二題,只剩下一塊未隔離的被感染的連續區域,此時需要安裝 5 個防火牆,且安裝完畢後病毒隔離任務完成。
示例 2:
輸入: grid =
[[1,1,1],
[1,0,1],
[1,1,1]]
輸出: 4
說明:此時只需要安裝 4 面防火牆,就有一小區域可以倖存,不被病毒感染。
注意不需要在世界邊界建立防火牆。
示例 3:
輸入: grid =
[[1,1,1,0,0,0,0,0,0],
[1,0,1,0,1,1,1,1,1],
[1,1,1,0,0,0,0,0,0]]
輸出: 13
說明:在隔離右邊感染區域後,隔離左邊病毒區域只需要 2 個防火牆了。
說明:grid 的行數和列數範圍是 [1, 50]。
grid[i][j] 只包含 0 或 1 。
題目保證每次選取感染區域進行隔離時,一定存在唯一乙個對未感染區域的威脅最大的區域。
我的**:
兩個小時吧
class solution
return result;
}public void getnum(int grid,int x,int y,boolean isvi)
if(isva(grid, x, y) && grid[x][y] == 0)
} public void kuosan(int grid);
int direy = ;
boolean visited = new boolean[grid.length][grid[0].length];
for (int i = 0; i < grid.length; i++) }}
}} }
public boolean isva(int grid,int x,int y)
return true;
}// 判斷是否應該停止
public boolean isend(int grid)
}} return true;
}// 找到感染最多的那個區域的橫縱座標返回
749 隔離病毒
病毒擴散得很快,現在你的任務是盡可能地通過安裝防火牆來隔離病毒。假設世界由二維矩陣組成,0表示該區域未感染病毒,而1表示該區域已感染病毒。可以在任意 2 個四方向相鄰單元之間的共享邊界上安裝乙個防火牆 並且只有乙個防火牆 每天晚上,病毒會從被感染區域向相鄰未感染區域擴散,除非被防火牆隔離。現由於資源...
隔離 正向隔離 反向隔離。
隔離是為了安全防護,加強資料傳輸控制。一般安裝隔離軟體即可,對訪問源進行過濾。可以與 緊密結合。隔離可以用在安全區之間,或者相同安全區的不同安全等級之間。隔離可以進行資料單向傳輸控制。隔離的本質是資料訪問與傳輸過濾,主機隔離 埠隔離 資料庫隔離 檔案隔離 服務隔離等。正向隔離 用於安全等級高的主機傳...
python 病毒 檔案複製 python病毒
介紹 原始碼分為3個部分 1 搜尋,搜尋所有的python指令碼 2 取出當前檔案的前39行,也就是這個指令碼的長度,然後將這個指令碼寫道所有找到的python指令碼中去 3 其他行為 usr bin python import os import datetime signature crankl...