파이썬 알고리즘
재귀 심화: 조합과 중복조합
뜻 지, 깨달음 오
2022. 10. 31. 22:03
path 배열안에 문자를 비교하면서 조합을 출력하는 방법 (참고용… 쓰지말기)
arr=['a','b','c','d']
path=['']*3
def abc(level):
if level==3:
for i in range(3):
print(path[i],end='')
print()
return
for i in range(4):
#1 path[level-1] -> 그전 단계에서 타고 들어온 곳
#2 arr[i] -> 앞으로 들어갈 가지
#3 그전 들어온 가지 < 앞으로 들어갈 가지 (True)
if level>0 and path[level-1] >= arr[i]: continue
path[level]=arr[i]
abc(level+1)
abc(0)
for문의 i값의 변화를 이용한 조합 출력하기
A B C
A B D
A C D
B C D
arr=['a','b','c','d']
path=['']*3
def abc(level,start):
if level==3:
print(*path)
return
for i in range(start,4):
path[level]=arr[i]
abc(level+1,i+1)
abc(0,0) #level start
for문의 i값의 변화를 이용한 중복조합 출력하기
A A A
A A B
A A C
A A D
A B B
A B C
A B D
A C C
A C D
A D D
B B B
B B C
B B D
B C C
B C D
B D D
C C C
C C D
C D D
D D D
arr=['a','b','c','d']
path=['']*3
def abc(level,start):
if level==3:
print(*path)
return
for i in range(start,4):
path[level]=arr[i]
abc(level+1,i)
abc(0,0) #level start