질문과 해결책이 있습니다. 그러나 보이지 그다지 용액 모든 테스트 케이스를 만족 될 :파이썬에서 조합 수 (transitivity) 고려
질문 :
변수 N이 명명 경계 (0, N-1) 변수 K는 테스트 케이스의 수를 의미를 나타낸다
각 테스트 (x, y)가 x로 주어지면, y는 같은 클래스 에 속하며 if (x, y)와 (y, z)는 x, y, z가 같은 클래스에 속한다.
출력 다른 클래스에서이 개 항목을 선택 가능한 방법의 수 있어야한다
솔루션 :
inp=raw_input()
inp1=inp.split(' ')
n=int(inp1[0])
k=int(inp1[1])
classes=[[]for i in xrange(0,n)]
no_classes=0
def in_list(c):
for i in range(0,no_classes):
if c in classes[i]:
return i;
return -1
for i in range(0,k):
inp=raw_input()
inp1=inp.split(' ')
c1=int(inp1[0])
c2=int(inp1[1])
l1=in_list(c1)
l2=in_list(c2)
if l1<0 and l2<0:
classes[no_classes].append(c1)
classes[no_classes].append(c2)
no_classes+=1
elif l1>=0 and l2<0:
classes[l1].append(c2)
elif l2>=0 and l1<0 :
classes[l2].append(c1)
elif l1>=0 and l2>=0 and l1!=l2:
classes[l1]=list(set(classes[l1]+classes[l2]))
del classes[l2]
no_classes-=1
tot_combntns=0;
for i in range(0,no_classes):
for j in range(i+1,no_classes):
tot_combntns=tot_combntns+len(classes[i])*len(classes[j])
print tot_combntns
Sample test case :
6 3
0 1
2 3
4 5
ans : 12
5 4
0 1
1 2
2 3
3 4
ans = 0 because there is only one class(0,1,2,3,4)
하지만이 솔루션을 만족하는 모든 테스트 케이스
달성하려는 내용이 텍스트에서 명확하지 않으며 코드 샘플이 잘못 선택된 변수 이름을 사용하여 목표를 이해하는 데 도움이되지 않습니다. 당신은 ['itertools.product'] (http://docs.python.org/2/library/itertools.html#itertools.product)을 찾고 있을지도 모르겠지만 꽤 추측입니다. – msw
프로그래밍상의 문제입니까? (나는 자동 인터뷰 질문인데 이상한 느낌이 든다.) – user2357112
@msw : 나쁜 코드는 ... 죄송합니다. 가능한 조합 수를 찾아야합니다. (다른 클래스의 조합 당 2 항목) – ranger