army玩偶战队对数

有n个玩偶,每只有(0-9)的战力,求现在需要组队,请问有多少种战力总和刚好为10的战队
对于100的数据≤100
样例输入
4
1 2 3 3
样例输出
0

1后面加个5吧~不然谁来做啊

用typescript语言写了下。主要使用回溯算法。本来以为很简单,研究了两三天……


const dolls = [1, 2, 3, 3, 0, 1, 0] //玩偶战力数组
const score = 10    //设定所需总战力
let calculationArry: number[] = []  //中间计算数组
let total = 0   //符合条件的战队数

function backTracking(calculationArry: Array<number>, index: number) {
    
    if (arraySum(calculationArry) === score) {
        console.log(calculationArry)    //打印符合战力的组合
        total++
    }

    for (let i = index; i < dolls.length; i++) {
        if ( arraySum(calculationArry) > score) {
            continue
        }
        calculationArry.push(i)
        backTracking(calculationArry, i + 1)
        calculationArry.pop()
    }
}

function arraySum(calculationArry: Array<number>) {
    let sum = 0
    for (let each of calculationArry) {
        sum = sum + dolls[each]
    }
    return sum
}

backTracking(calculationArry, 0)
console.log(total)

打印结果如下
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 5]
[0, 1, 2, 3, 5, 6]
4

参考