深度 A-B-D,A-B-E-I,A-C-F,A-C-G,A-C-H
广度 A-B-C-D-E-F…
涉及
深度 全排列 ([1,2,3,4] 全排列)
广度 硬币凑数最少枚数(1元,3元和5元的硬币若干枚,如何用最少的硬币凑够11元)
[1,2,3,4] 全排列 循环递归
// 1 得到所有数字的排列
function dp(arr) {
if (arr.length === 1) {
return arr;
}
let r = [];
for (let a = 0; a < arr.length; a++) {
let arr1 = [...arr];
let v = arr1[a];
arr1.splice(a, 1);
dp(arr1).forEach(e => {
let t = []
t = t.concat(e, v)
r.push(t)
})
}
return r;
}
let input = [1,2,3,4]
console.log(dp(input))
硬币凑数最少枚数(1元,3元和5元的硬币若干枚,如何用最少的硬币凑够11元)
function dp(x) {
if(x==0) return 0
//设置比较参数 正无穷
let min=Infinity
//取1
if(x>=1){
min=Math.min(dp(x-1)+1,min)
}
//取3
if(x>=3){
min=Math.min(dp(x-3)+1,min)
}
//取5
if(x>=5){
min=Math.min(dp(x-5)+1,min)
}
return min
}
console.log(dp(11))