某云短信厂商,为庆祝国庆,推出充值优惠活动。现在给出客户预算,和优惠售价序列,求最多可获得的短信总条数。
Pi为充值 i 元获得的短信条数。
1 ≤ Pi ≤ 1000 , 1 ≤ n ≤ 100
最多获得的短信条数。
// 读取输入的客户预算 budget 和优惠售价序列 list
function calculateMaxSMS(budget, list) {
// 使用动态规划计算最多获得的短信条数
const dp = new Array(budget + 1).fill(0);
// 遍历优惠售价序列 list,对于每个售价 i,遍历从0到预算的所有金额 j。
for (let i = 0; i < list.length; i++) {
for (let j = 1; j <= budget; j++) {
if (j >= i + 1) {
dp[j] = Math.max(dp[j], dp[j - i - 1] + list[i]);
}
}
}
return dp[budget];
}
12
[10,20,50,70,90,130,180]
下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路
本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。