我正在编写一种算法,该算法在排行榜上占据25个位置,并确定该排行榜中每个排名获得多少收入。
假设支付是按照我最能描述为奇点曲线的方式支付给每个级别的(在数学上不太好,所以我敢肯定有一个术语)。
与排行榜对应的曲线的每一步,乘数都会增加...第一个乘数要比第25个大得多。
我正在尝试将其写出来,以便在算法在内部while循环中迭代25个位置之后,它评估天气情况:初始乘数在击中所有25个位置后达到排行榜的总底池,如果不是,则增加乘以一个小数点后返回内部while循环。
似乎尝试这种方法,当我尝试将“ payRunner”乘以乘数时,它被卡在远远低于最大值的十进制数处。我想这对DP来说是个完美的问题,但只想先获得一个可行的解决方案...因此,将DP重构为该解决方案的想法受到了极大的赞赏,但不是必须的。有什么想法吗?
我的代码:
const payCurve = (subscription) => {
let max = 3 * (subscription * 25);
let maxReached = false;
let multiplier = 1.01;
let payRunner = 25;
let total = 0;
let ranks = 25;
let count = 1;
while (maxReached == false) {
while (count <= ranks) {
payRunner *= multiplier
count ++
}
if (payRunner < max) {
multiplier += 0.01
}
console.log(payRunner)
if (payRunner > max) {
maxReached = true
}
}
}
payCurve(50)