Part5.10完全にナビゲートしてサブセット(DFS)を求めて組み合わせます


組み合わせを求める



私が思うコード

import sys
sys.stdin = open("input.txt", "rt")

def DFS(L):
    global cnt
    global stdNum
    if L == m:
        for x in ch:
            print (x, end=" ")
        cnt+=1
        print()


    else:
        if L>0:
            stdNum = ch[L-1]
        for i in range(stdNum, n+1):
            if level[i] == 0:
                level[i] = 1
                ch[L] = i
                DFS(L+1)
                level[i] = 0;

                 

if __name__ == "__main__":
    stdNum = 1
    cnt = 0
    n, m = map(int,input().split()) # 4 2
    level = [0] *(n+1) #4
    ch = [0] * m #2
    DFS(0)
    print(cnt)
    ```
    
   정말 오래 걸렸디...
   근데 알고보니 그냥 기준 값 하나만 주면 되었던 것을...
   과연 선생님은 얼마나 더 쉽게 하셨을까?
   
   ## 선생님 코드
   ```python
   import sys
sys.stdin = open("input.txt", "rt")

def DFS(L, s):
    global cnt
    if L == m:
        for j in range(L):
            print(res[j], end=' ')
        cnt+=1
        print()
    else:
        for i in range(s, n): #n은 4
            res[L] = i
            DFS(L+1, i+1) #레벨 1 증가, 뻗는 가지 1 증가
            
                 

if __name__ == "__main__":
    n, m = map(int,input().split()) # 4 2
    res = [0] * (n+1) #2
    cnt = 0
    DFS(0, 1)

そうですね.考えてみれば、もともとあなたに慈悲を与えることができます.
どうして応用できないのですか.ははは
変数を作らなければならない.
気持ちがいいですか?!