반응형
#-----------------------------------------------------
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, "------------"
if len(list) == 0 or sum < 0:
return []
e = list[0]
l = [ list[i] for i in range(1, len(list)) ]
if e == sum:
return [ [e] ]
ret_list = []
for ele in find_combination(sum-e, l):
if not is_in_list([e] + ele, ret_list):
ret_list.append([ e ] + ele)
for ele in find_combination(sum, l):
if not is_in_list(ele, ret_list):
ret_list.append(ele)
return ret_list
#-----------------------------------------------------
def summation(l):
sum = 0
for e in l:
sum += e
return sum
for e in find_combination(200, [ 10, 20, 20, 20, 30, 40, 50, 60, 60, 70 ]):
print e, sum(e)
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, "------------"
if len(list) == 0 or sum < 0:
return []
e = list[0]
l = [ list[i] for i in range(1, len(list)) ]
if e == sum:
return [ [e] ]
ret_list = []
for ele in find_combination(sum-e, l):
if not is_in_list([e] + ele, ret_list):
ret_list.append([ e ] + ele)
for ele in find_combination(sum, l):
if not is_in_list(ele, ret_list):
ret_list.append(ele)
return ret_list
#-----------------------------------------------------
def summation(l):
sum = 0
for e in l:
sum += e
return sum
for e in find_combination(200, [ 10, 20, 20, 20, 30, 40, 50, 60, 60, 70 ]):
print e, sum(e)
728x90
'프로그래밍 > 미분류' 카테고리의 다른 글
[WINDOWS] 비스타 이후버전 무결성 (integrity level) 보기, 바꾸기 툴. (0) | 2009.12.02 |
---|---|
2의 거듭제곱 (10만승까지) 벤포드 법칙 무식쟁이 방법으로 확인. (2) | 2009.07.30 |
[IIS] 윈도우즈 XP 프로페셔널에서 여러 웹사이트 (0) | 2009.07.20 |
[번역] 유저모드에서 최대절전모드 알아내기 (0) | 2009.05.18 |
Private but Shareable (0) | 2009.04.24 |