【算法题】吃糖问题
题干:一个人一次可以吃1颗糖,也可以吃2颗糖,也可以同时吃下n颗糖。求这个人吃完n颗糖有多少种方式。
function findWayEatSugarNumber(n) {
const wayArr = findWayEatSugar(n);
const returnArr = wayArr.map((ele) => ele.sort()).map((ele) => ele.join());
return Array.from(new Set(returnArr));
}
function findWayEatSugar(n) {
const result = [[n]];
for (let i = 1; i <= n; i++) {
const j = n - i;
if (j === 0) continue;
const jArr = findWayEatSugar(j);
const prevArr = jArr.map((ele) => [i, ...ele]);
result.push(...prevArr);
}
return result;
}
const testArr = [1, 2, 3, 4, 5, 6, 7, 8];
testArr.forEach((ele) => {
const result = findWayEatSugarNumber(ele);
console.log(`吃${ele}颗糖,共有${result.length}种方式,分别为:`, result);
})


浙公网安备 33010602011771号