티스토리 뷰

반응형

1. 조합(Combination)


  • nCr=n1Cr1+n1CrnCr = n-1Cr-1 + n-1Cr
N = 5
for i in range(N-2):
    for j in range(i+1, N-1):
        for k in range(j+1, N):
            print(i,j,k)
# output
0 1 2
0 1 3
0 1 4
0 2 3
0 2 4
0 3 4
1 2 3
1 2 4
1 3 4
2 3 4

2. 재귀를 이용해서 구현해보기!


def nCr(n, r, s):   # n개의 원소에서 r개를 순서없이 뽑늗다. s는 시작하는 범위
    if r == 0:
        print(*comb)
    else:
        for i in range(s, n-r+1):
            comb[r-1] = A[i]    #n-1Cr-1 (A의 i번째 원소를 선택해서 넣었다.)
            nCr(n, r-1, i+1)    #n-1Cr (i를 뽑았으므로, 다음 원소는 i+1 부터 뽑을 수 있다.)

A = [1,2,3,4,5]
n = len(A)
r = 3
comb = [0] * r
nCr(n, r, 0)
3 2 1
4 2 1
5 2 1
4 3 1
5 3 1
5 4 1
4 3 2
5 3 2
5 4 2
5 4 3

Uploaded by N2T

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함