[블 루 브리지 컵] 7 단 코드 python 해법
11035 단어 블 루 브리지 컵
위의 그림 은 7 단 디지털 관 의 그림 을 보 여 주 었 다. 디지털 관 에는 모두 7 단 이 빛 을 발 할 수 있 는 다이오드 가 있 는데 각각 a, b, c, d, e, f, g 로 표시 되 어 있다.파란색 은 일부 다이오드 (적어도 하나) 의 발광 을 선택 하여 문 자 를 표현 해 야 한다.문자 의 표현 을 디자인 할 때 모든 빛 나 는 다이오드 가 한 조각 으로 연결 되 어야 한다.예 를 들 어 b 발광, 다른 다이오드 가 발광 하지 않 으 면 한 문 자 를 표현 할 수 있다.예 를 들 어 c 발광, 기타 다이오드 가 발광 하지 않 으 면 한 문 자 를 표현 할 수 있다.이 방안 은 이전 줄 의 방안 과 비슷 해 보이 지만 다른 문 자 를 표시 하 는 데 사용 할 수 있다.예 를 들 어 a, b, c, d, e 발광, f, g 불 발광 은 한 문 자 를 표현 할 수 있다.예 를 들 어 b, f 가 빛 을 발 하고 다른 다이오드 가 빛 을 발 하지 않 으 면 한 가지 문 자 를 표현 할 수 없다. 빛 나 는 다이오드 가 한 조각 으로 연결 되 지 않 았 기 때문이다.블 루 는 7 단 디지털 튜브 로 몇 가지 다른 문 자 를 표현 할 수 있 습 니까?
결과: 80
import itertools
class UnionFindSet():
def __init__(self,n):
self.setSize = n #
self.father = {
i:-1 for i in range(7)}
def find(self,x):
root = x
while self.father[root] != -1: #
root = self.father[root]
while (x != root): #
o = self.father[x] # x
self.father[x] = root # x
x = o #
return root
def merge(self, x, y):
root_x = self.find(x)
root_y = self.find(y)
if root_x != root_y:
self.father[root_x] = root_y #
self.setSize -= 1
dic = {
0: [1, 5], 1: [0, 2, 6], 2: [1, 3, 6], 3: [2, 4], 4: [3, 5, 6], 5: [0, 4, 6], 6: [1, 2, 4, 5]
}
ans, nums = 7, [x for x in range(7)]
for i in range(2,8):
for j in (itertools.combinations(nums, i)):
uf = UnionFindSet(len(j))
for k in range(len(j)):
for m in range(k + 1, len(j)):
if j[m] in dic[j[k]]:
uf.merge(j[m], j[k])
if uf.setSize == 1:
ans += 1
print(ans)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정규 표현 식 (python 3)정규 표현 식 은 문자 조작 에 대한 논리 적 공식 으로 미리 정 의 된 특정한 문자 와 특정한 문자 의 조합 으로 '규칙 문자열' 을 구성 하 는 것 입 니 다. match 는 문자열 의 시작 위치 에서 패턴 과 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.