2019大疆PC软件开发笔试——开关和灯泡两个电路板
題目描述:
小A是一名DIY愛(ài)好者,經(jīng)常制作一些有趣的東西。
今天,小A突然想要來(lái)做這樣一個(gè)東西。小A現(xiàn)在有兩塊同樣大小為n×m,有n×m塊大小為1×1小電路板拼成的矩形電路板,假設(shè)叫做電路板A和電路板B。電路板A上每個(gè)小電路板都是一個(gè)開(kāi)關(guān),電路板B上每個(gè)小電路板上都是一盞電燈泡。A與B之間存在如下關(guān)系:對(duì)于B上的某盞燈Bij的開(kāi)關(guān)控制,有A上第i行與第j列所有開(kāi)關(guān)并聯(lián)控制。即:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
現(xiàn)給一矩陣,表示B上燈泡的明暗狀態(tài),問(wèn)是否存在一種A的開(kāi)關(guān)狀態(tài),能夠滿足給出的B上的燈泡開(kāi)關(guān)情況,如果有輸出YES,沒(méi)有輸出NO。
輸入描述:
第一行,n和m表示電路板的長(zhǎng)和寬,(1<=n,m<=1000)
接下來(lái)n行,每行有m個(gè)由空格隔開(kāi)的數(shù)字,0或1。0表示燈泡暗,1表示燈泡亮
輸出描述:
輸出一行,如果存在至少一種A的開(kāi)關(guān)設(shè)置方式,能夠使得B上燈泡明亮和給出的狀態(tài)矩陣相同,則輸出YES;不存在則輸出NO。
示例:
樣例1:
輸入:
2 3
1 1 1
1 1 1
輸出:
YES
樣例2:
輸入:
2 3
1 1 0
0 1 1
輸出:
NO
思路
我的想法是可以不判斷開(kāi)關(guān)狀態(tài),直接判斷燈的狀態(tài),因?yàn)楦鶕?jù)電路知識(shí)可以得到,一個(gè)a[i][j]開(kāi)關(guān)打開(kāi)將導(dǎo)致b中[i]行和[j]列所有的燈的打開(kāi)(一個(gè)十字交叉)
因此只需要判斷b是否滿足這種十字交叉的分布
也就是如果b某個(gè)元素為true 則他對(duì)應(yīng)的一行或者一列必須為true? 不滿足直接輸出NO(這里可以只遍歷第一行和第一列,并計(jì)數(shù)滿足條件的行和列)
全為true的行數(shù)和列數(shù)必須大于0(表明有交點(diǎn),交點(diǎn)處該處a的開(kāi)關(guān)打開(kāi))? 不滿足輸出NO
代碼整理后給出
另一個(gè)網(wǎng)友的代碼:
https://blog.csdn.net/lizhentao0707/article/details/80964205
轉(zhuǎn)載于:https://www.cnblogs.com/wendyy/p/9287247.html
總結(jié)
以上是生活随笔為你收集整理的2019大疆PC软件开发笔试——开关和灯泡两个电路板的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 气象学者示警:气候危机纪元已至!持续高温
- 下一篇: 享元模式 - 结构型模式