day 26 7 단

11963 단어 블 루 브리지 컵
[문제 설명]
파랑 이 는 7 단 디지털 관 으로 특수 한 문 자 를 표시 해 야 한다.
위의 그림 은 7 단 디지털 관 의 그림 을 보 여 주 었 다. 디지털 관 에는 모두 7 단 이 빛 을 발 할 수 있 는 다이오드 가 있 는데 각각 a, b, c, d, e, f, g 로 표시 되 어 있다.파란색 은 일부 다이오드 (적어도 하나) 의 발광 을 선택 하여 문 자 를 표현 해 야 한다.문자 의 표현 을 디자인 할 때 모든 빛 나 는 다이오드 가 한 조각 으로 연결 되 어야 한다.
	  :b   ,                  。
	  :c   ,                  。
	                      ,         。
	  :a, b, c, d, e   ,f, g              。
	  :b, f   ,                   ,              。

블 루 는 7 단 디지털 튜브 로 몇 가지 다른 문 자 를 표현 할 수 있 습 니까?
[정 답 제출!]
이것 은 결 과 를 빈 칸 으로 채 우 는 문제 이 니, 너 는 결 과 를 계산 해서 제출 하면 된다.이 문제 의 결 과 는 하나의 정수 로 답안 을 제출 할 때 이 정수 만 작성 하고 불필요 한 내용 을 기입 하면 점 수 를 얻 을 수 없다.
문제 풀이: 그리고 찾기 + 깊이 찾기
(답 은 틀 렸 지만 틀린 게 보이 지 않 는 다)
from string import ascii_letters
from itertools import combinations
from collections import deque


class UF:
    def __init__(self, count, ori: tuple):
        self.res = 0
        self.count = count
        self.lst = []
        self.deque = deque(ori)
        self.parent = {
     
            'a': ['b', 'f'],
            'b': ['a', 'g', 'c'],
            'c': ['b', 'd', 'g'],
            'd': ['c', 'd'],
            'e': ['d', 'f', 'g'],
            'f': ['a', 'e', 'g'],
            'g': ['b', 'c', 'e', 'f']
        }

    def union(self, x):
        if self.lst:
            for node in self.lst:
                if x in self.parent[node]:
                    self.lst.append(x)
                    return True
            else:
                return False
        else:
            self.lst.append(x)
            return True

    def func(self):
        length = self.count
        while True:
            count = 0
            while count < length:
                x = self.deque.popleft()
                if self.union(x):
                    pass
                else:
                    self.deque.append(x)
                count += 1
            if length == len(self.deque):
                break
            else:
                length = len(self.deque)
            if not self.deque:
                break
        if len(self.deque) == 0:
            return True


if __name__ == '__main__':
    str_lst = list(ascii_letters[:7])
    count = 0
    for i in range(1, 8):
        for choice in combinations(str_lst, i):
            uf = UF(i, choice)
            if uf.func():
                count += 1
        print(i, count)
    print(count)

좋은 웹페이지 즐겨찾기