[DFS] 조합구하기

suojae·2023년 12월 4일
post-thumbnail


문제 정의

  1. 1부터 N까지 구슬에 각각 번호가 적혀있다
  2. 이 중 M개를 뽑는 경우의 수 전부 출력하기

해결


/*
Tree
             (start)
             /  |  \
            /   |   \
           1    2    3
         / | \  | \   \
        /  |  \ |  \   \
       2   3   4 3   4  4
*/


import Foundation


var n: Int = 0
var m: Int = 0
var res: [Int] = []
var cnt = 0

func dfs(_ L: Int, _ s: Int) {
    if L == m {
        for i in 0..<m {
            print(res[i], terminator: " ")
        }
        print()
        cnt += 1
    } else {
        for i in s..<n+1 {
            res[L] = i
            dfs(L + 1, i + 1)
        }
    }
}

n = 4
m = 2
res = [Int](repeating: 0, count: m)

dfs(0, 1)
print(cnt)
profile
Hi 👋🏻 I'm an iOS Developer who loves to read🤓

0개의 댓글