조합 성공 pop 중요

chi·2023년 5월 9일

자료구조

목록 보기
8/13
post-thumbnail
    if len(sc)==r:
        goal.append(sc[:])
        sc.pop()
    else:
        for i in range(start,len(li)):
            sc.append(li[i])
            print(sc)
            recurse(i+1)
            sc.pop()
    return

아 여기서 이렇게 하면 sc pop해서

조합 성공

inn=list(map(int,input().split()))
n=inn[0]
r=inn[1]
#nCr 조합 
li=[i for i in range(1,n+1)] #임의로 만든
goal=[] #결과 저장
sc=[] #계산공간

def recurse(start=0):
    global n,r
    
    if len(sc)==r:
        goal.append(sc[:])
        sc.pop()
    else:
        for i in range(start,len(li)):
            sc.append(li[i])
            recurse(i+1)
        if len(sc): #12'5'까지 했으면
            sc.pop()    
    return

recurse()
print(goal)

pop

여기다가도 넣어줘야 된다
안 하면 계속 123 124 125 123 124 125..122..이렇게 됨

지정된 좌석.이 있는 거 아니면 pop 열심히 해줘야되네 ㅅㅂ 어려워라
sc[i]=어쩌구 이렇게 저장

def combination(arr, r):
    # 1.
    arr = sorted(arr)
    used = [0 for _ in range(len(arr))]

    # 2.
    def generate(chosen):
        if len(chosen) == r:
            print(chosen)
            return

    	# 3.
        start = arr.index(chosen[-1]) + 1 if chosen else 0
        for nxt in range(start, len(arr)):
            if used[nxt] == 0 and (nxt == 0 or arr[nxt-1] != arr[nxt] or used[nxt-1]):
                chosen.append(arr[nxt])
                used[nxt] = 1
                generate(chosen)
                chosen.pop()
                used[nxt] = 0
    generate([])
    

출처: https://shoark7.github.io/programming/algorithm/Permutations-and-Combinations

아 recurse 하고 그 다음에 pop하면 되겠....하 시발 몰라

1759 ??

https://www.acmicpc.net/problem/1759

이거 아님? 조합
아니 그래도 골5이네 근데 순열은 실3이었으면서

0개의 댓글