16 隔離病毒

2021-09-24 16:15:14 字數 2192 閱讀 4933

題目描述:

病毒擴散得很快,現在你的任務是盡可能地通過安裝防火牆來隔離病毒。

假設世界由二維矩陣組成,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...