題目描述:
小A是一名DIY愛好者,經常制作一些有趣的東西。
今天,小A突然想要來做這樣一個東西。小A現在有兩塊同樣大小為n×m,有n×m塊大小為1×1小電路板拼成的矩形電路板,假設叫做電路板A和電路板B。電路板A上每個小電路板都是一個開關,電路板B上每個小電路板上都是一盞電燈泡。A與B之間存在如下關系:對于B上的某盞燈Bij的開關控制,有A上第i行與第j列所有開關并聯控制。即:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
現給一矩陣,表示B上燈泡的明暗狀態,問是否存在一種A的開關狀態,能夠滿足給出的B上的燈泡開關情況,如果有輸出YES,沒有輸出NO。
輸入描述:
第一行,n和m表示電路板的長和寬,(1<=n,m<=1000)
接下來n行,每行有m個由空格隔開的數字,0或1。0表示燈泡暗,1表示燈泡亮
輸出描述:
輸出一行,如果存在至少一種A的開關設置方式,能夠使得B上燈泡明亮和給出的狀態矩陣相同,則輸出YES;不存在則輸出NO。
示例:
樣例1:
輸入:
2 3
1 1 1
1 1 1
輸出:
YES
樣例2:
輸入:
2 3
1 1 0
0 1 1
輸出:
NO
思路
我的想法是可以不判斷開關狀態,直接判斷燈的狀態,因為根據電路知識可以得到,一個a[i][j]開關打開將導致b中[i]行和[j]列所有的燈的打開(一個十字交叉)
因此只需要判斷b是否滿足這種十字交叉的分布
也就是如果b某個元素為true 則他對應的一行或者一列必須為true? 不滿足直接輸出NO(這里可以只遍歷第一行和第一列,并計數滿足條件的行和列)
全為true的行數和列數必須大于0(表明有交點,交點處該處a的開關打開)? 不滿足輸出NO
代碼整理后給出
另一個網友的代碼:
https://blog.csdn.net/lizhentao0707/article/details/80964205