본문 바로가기

분할

(3)
[EP 078] 동전 나누기 문제 78 : p(n)을 n개의 동전을 무더기로 나누는 경우의 수라고 하자. 예를 들어서, 5개의 동전이 있다면, 다음과 같이 7가지 방법이 있어서, p(5) = 7이 된다. ooooo oooo o ooo oo ooo o o oo oo o oo o o o o o o o o 해법 : Q(n, m) 을 n개의 동전을 나눌 때 가장 큰 무더기를 이루는 갯수가 m개인 경우의 수라고 한다. 위 예에서 보면, Q(5,5) = 1 Q(5,4) = 1 Q(5,3) = 2 Q(5,2) = 2 Q(5,1) = 1 이 되는 것을 알 수 있다. 이렇게 정의한 Q(n, m)에서 다음과 같은 식이 항상 성립함을 알 수 있다. Q(n, n) = 1 Q(n, 1) = 1 m Q(n, m) = sum Q(n-m, i) i = 1 마지..
[Py] 중복된 숫자 집합을 주어진 합으로 분할하기 #!/usr/bin/env python def is_two_listlist_identical(lla, llb): #print "XXXXXXXXXXXXXXXXXXXXXXX" #print lla #print llb for i in range(len(lla)): la = lla[i] lb = llb[i] if len(la) != len(lb): return False else: if len(la) != 0: for j in range(len(la)): if la[j] != lb[j]: return False return True def is_already_in(lll, ll): la = [ le for le in ll ] for e_ll in lll: lb = [ le for le in e_ll ] if is..
[Py] 숫자 리스트와 합이 주어졌을 때, 리스트의 합이 주어진 합인 부분 리스트 찾기 #----------------------------------------------------- def is_in_list(lst, lstlst): lst.sort() bRet = False for e in lstlst: e.sort() if len(e) == len(lst): bRet = True for i in range(len(e)): if e[i] != lst[i]: bRet = False break return bRet #----------------------------------------------------- def find_combination(sum, list): # print "---------" # print "-----------", sum, list, "------------..