합이같은 부분집합(DFS)

suojae·2023년 11월 24일



import Foundation

func DFS(_ L: Int, _ sum: Int) {

	//sum이 토탈반값보다 크면 더이상 계산할 필요없으므로 리턴
    if sum > total / 2 { return }
	
    //트리 끝까지 도착하면 값 체크하기
    if L == n {
        if sum == total - sum {
            found = true
            return
        }
    } else {
       
        //원소를 쓴다면 더하기, 안쓴다면 그냥 밑으로만 보내기
        DFS(L + 1, sum + a[L])
        DFS(L + 1, sum)
    }
}

var n = 6
var a = [1, 3, 5, 6, 7, 10]
var total = a.reduce(0, +)
var found = false

func sol() {
    DFS(0, 0)
    print(found ? "Yes" : "No")
}
sol()

profile
Hi 👋🏻 I'm an iOS Developer who loves to read🤓

0개의 댓글