小藍(lán)正在玩一款游戲,游戲中有一個(gè)n × n大小的 01 矩陣 Ai, j 。
小藍(lán)每次需要選擇一個(gè)T字型的區(qū)域,且這個(gè)區(qū)域內(nèi)至少要有一個(gè) 1 。選中后,這個(gè)區(qū)域內(nèi)所有的元素都會(huì)變成 0。
給定游戲目前的矩陣,小藍(lán)想知道他最多可以進(jìn)行多少次上述操作。
T字型區(qū)域是指形如 (x ? 1, y) (x, y) (x + 1, y) (x, y + 1) 的四個(gè)點(diǎn)所形成的區(qū) 域。其旋轉(zhuǎn) 90, 180, 270 度的形式同樣也視作 T 字形區(qū)域。
輸入包含多組數(shù)據(jù)。
輸入的第一行包含一個(gè)整數(shù) D 表示數(shù)據(jù)組數(shù)。
對(duì)于每組數(shù)據(jù),第一行包含一個(gè)整數(shù)n。
接下來(lái)n行每行包含n個(gè)0或1,表示矩陣Ai, j的每個(gè)位置的值。
1 3 001 011 111
5
我們用 X 表示某次操作選中的 T 字形,以下給出一種可行方案:
001 XXX 0X0 00X 0X0 X00
011 => 0X1 => XXX => 0XX => XX0 => XX0
111 111 111 11X 1X0 X00
對(duì)于 10% 的評(píng)測(cè)用例,n = 3 ;
對(duì)于 40% 的評(píng)測(cè)用例,n ≤ 30 ;
對(duì)于所有評(píng)測(cè)用例,3 ≤ n ≤ 2000,矩陣中僅含 0 和 1 。
1. 對(duì)于編程題目,不能使用諸如繪圖、硬件操作或與操作系統(tǒng)相關(guān)的 API。
2. 所有依賴(lài)的模塊(如 math)必須明確地在源文件中 import。
3. 只能使用 python 自帶的模塊,使用 pip 等安裝的擴(kuò)展模塊無(wú)法使用。
4. 提交時(shí),注意選擇使用Python語(yǔ)言。
比賽結(jié)束依舊可以訓(xùn)練,請(qǐng)見(jiàn)題集2022年第十三屆藍(lán)橋杯大賽軟件類(lèi)省賽Python大學(xué)B組真題