1. 程式人生 > 實用技巧 >2020第11屆藍橋杯C++B組(不確保答案正確性,僅供參考)藍橋2020試題 E: 七段碼 (思路 無答案)

2020第11屆藍橋杯C++B組(不確保答案正確性,僅供參考)藍橋2020試題 E: 七段碼 (思路 無答案)

本題總分:15 分

【問題描述】

在這裡插入圖片描述
小藍要用七段碼數碼管來表示一種特殊的文字。
上圖給出了七段碼數碼管的一個圖示,數碼管中一共有 7 段可以發光的二
極管,分別標記為 a, b, c, d, e, f, g。
小藍要選擇一部分二極體(至少要有一個)發光來表達字元。在設計字元
的表達時,要求所有發光的二極體是連成一片的。
例如:b 發光,其他二極體不發光可以用來表達一種字元。
例如:c 發光,其他二極體不發光可以用來表達一種字元。這種方案與上
一行的方案可以用來表示不同的字元,儘管看上去比較相似。
例如:a, b, c, d, e 發光,f, g 不發光可以用來表達一種字元。
例如:b, f 發光,其他二極體不發光則不能用來表達一種字元,因為發光

的二極體沒有連成一片。
請問,小藍可以用七段碼數碼管表達多少種不同的字元?

【答案提交】

這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果為一
個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。

這個題考試時沒仔細看,最後10分鐘回頭看時才發現很簡單,可惜沒時間做了,血虧

思路:
把每一個字母頭對映到一個數組的下標,然後對陣列進行全排列,判斷是否合法需要bfs或dfs

大概就相當於定義一個數組{0,0,0,0,1,1,1},陣列內的值是會變的,分別是1個1,2個1,3個1,4個1以此類推,0表示此處的字母不存在,1表示存在,對該陣列進行全排列,對於每一個存在的字母,判斷是否有相鄰的其他已存在字母,有則聯通,無則不連通.然後這道題就變成了一個求解是否只有一個連通塊的問題…

至於如何處理連通,就是假設a對映到陣列下標是0,b是2,f是6,那麼0能到達2,也能到達6,這樣這道題就徹底變成了一道圖的遍歷問題

據說答案是80