749 隔離病毒

2021-09-23 06:00:15 字數 1459 閱讀 7698

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

假設世界由二維矩陣組成,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]只包含01

題目保證每次選取感染區域進行隔離時,一定存在唯一乙個對未感染區域的威脅最大的區域。

16 隔離病毒

題目描述 病毒擴散得很快,現在你的任務是盡可能地通過安裝防火牆來隔離病毒。假設世界由二維矩陣組成,0 表示該區域未感染病毒,而 1 表示該區域已感染病毒。可以在任意 2 個四方向相鄰單元之間的共享邊界上安裝乙個防火牆 並且只有乙個防火牆 每天晚上,病毒會從被感染區域向相鄰未感染區域擴散,除非被防火牆...

7 49 特殊時期

人的一生經常會有一些特殊時期。現在hy就處在他的某個人生特殊時期中。這個時期中乙個月是按4個星期來計算的。這個時期是從2008.10.05開始的,這一天正好是個星期天。我們約定,星期天是乙個星期中的第一天。告訴你日期,請你確定現在是hy特殊時期中的第幾個星期和第幾個月 都是從1開始編號 如2008....

7 49 漢諾塔問題 10分

漢諾塔是乙個源於印度古老傳說的益智玩具。據說大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤,大梵天命令僧侶把圓盤移到另一根柱子上,並且規定 在小圓盤上不能放大圓盤,每次只能移動乙個圓盤。當所有圓盤都移到另一根柱子上時,世界就會毀滅。請編寫程式,輸入漢諾塔圓片...