问题:在一个平行宇宙中,麦当劳的麦乐鸡块分为 7 块装、13 块装和 29 块装。有一天,你的老板让你出去购买正好为 n 块(0 < n <= 10000)的麦乐鸡块回来,请提供一个算法判断是否可行。
说明:除了三重循环的解法,有没有效率更高一点的方法。求大佬指点。
问题:在一个平行宇宙中,麦当劳的麦乐鸡块分为 7 块装、13 块装和 29 块装。有一天,你的老板让你出去购买正好为 n 块(0 < n <= 10000)的麦乐鸡块回来,请提供一个算法判断是否可行。
说明:除了三重循环的解法,有没有效率更高一点的方法。求大佬指点。
const checkNuggets = (nuggets) => {
let temp = []
temp[7] = true
temp[13]-= true
temp[29] = true
for (let i = 7; i < nuggets; i+= 1) {
if (temp[i]) {
temp[i + 7] = true
temp[i + 13] = true
temp[i + 29] = true
} else continue
}
return !!temp[nuggets]
}
console.log(checkNuggets(25)) // false
console.log(checkNuggets(26)) // true
console.log(checkNuggets(27)) // true
console.log(checkNuggets(28)) // true
console.log(checkNuggets(29)) // true
console.log(checkNuggets(30)) // false
递归实现