有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