乘以变量乘以一个乘数,使乘积卡在最大值以下

时间:2019-10-18 14:00:18

标签: javascript algorithm dynamic

我正在编写一种算法,该算法在排行榜上占据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)

0 个答案:

没有答案