programmers.ターゲット番号(swift)


programmers.ターゲット番号(swift)


問題の説明


n個の非負の整数.
たとえば、[1,1,1,1,1,1]で数字3を作成するには、次の図のように5つの方法を使用します.
数字を適当に加算して減算し、ターゲット番号を生成する方法の数を戻せばよい.

問題を解く

import Foundation

var cnt = 0
var targetcopy = 0

func DFS(_ numbers:[Int],_ index:Int,_ sum:Int){

    if index == numbers.count{
        if targetcopy == sum{
            cnt += 1
        }
        return
    }
    DFS(numbers, index + 1, sum + numbers[index])
    DFS(numbers, index + 1, sum - numbers[index])
}

func solution(_ numbers:[Int], _ target:Int) -> Int {

    targetcopy = target
    DFS(numbers, 0, 0)
    return cnt
}

感想


基礎DFS問題を解いているような気がします.
DFSさえ分かれば、誰でも簡単にこの問題を解決できる.

问题的短片