[1182] 부분 수열의 합

toru·2022년 9월 19일
0
// 최소 하나의 원소는 있어야 한다.
let p = readLine()!.split(separator: " ").map{Int(String($0))!}
let (n,end) = (p[0],p[1])
let arr = readLine()!.split(separator: " ").map{Int(String($0))!}
var visited = [Bool](repeating: false, count: n+1)
var result = 0

func dfs(_ start:Int,_ cnt:Int,_ num:Int) {
    if num == end && 0 < cnt {
        result += 1
    }
    for i in start..<n {
        if !visited[i] {
            visited[i] = true
            dfs(i, cnt+1, num+arr[i])
            visited[i] = false
        }
    }
}
dfs(0, 0, 0)
print(result)
profile
iOS

0개의 댓글