gpt4 book ai didi

c# - 如何将数字转换为价格范围

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:22:45 24 4
gpt4 key购买 nike

我想计算在客户购买我的产品许可时向他们收取的费用。

我在许可范围内销售它:

  • 1-10:50 美元/用户
  • 11-20:40 美元/用户
  • 21-30:30 美元/用户
  • 31-50 岁:20 美元/用户

所以当有人购买136个license时,我会向他收费:

50 x 2 x $20 = $2000
30 x 1 x $30 = $900
6 x $50 = $300

我正在寻找一种算法来处理给定的数字并将其分解为一定范围内的出现次数。我如何在纯 C# 或 LINQ 中执行此操作?

------------ 编辑----------------------------

我开始了一个不那么令人困惑的问题 (Algorithm for Fogbugz pricing scheme),我得到了我一直在寻找的答案。

谢谢大家..

最佳答案

如果采用这种价格结构,我认为通过购买最适合他们需求的套餐来最大限度地降低成本符合客户的最大利益。以下算法使用动态规划来计算准确购买一定数量许可证的最低可能价格(您可以通过购买超过您需要的数量来节省资金,尽管我还没有实现):

int getPrice(int n)
{
if (n >= 1 && n <= 10) return 50 * n;
if (n >= 11 && n <= 20) return 40 * n;
if (n >= 21 && n <= 30) return 30 * n;
if (n >= 31 && n <= 50) return 20 * n;
throw new Exception("Impossible");
}

int minimizePrice(int n)
{
int[] minimumPrice = new int[n + 1];
for (int i = 1; i <= n; ++i)
{
minimumPrice[i] = int.MaxValue;
for (int j = Math.Max(0, i - 50); j < i; ++j)
{
minimumPrice[i] = Math.Min(minimumPrice[i],
minimumPrice[j] + getPrice(i - j));
}
}
return minimumPrice[n];
}

对于 70 个许可,最低价格为 1400 美元,可以通过购买 2 个 block ,每 block 35 个许可来获得。您建议使用贪婪算法。这会让您的客户感到困惑。一个聪明的客户会下两个订单而不是一个大订单,这样可以节省 400 美元。

我建议更改您的价格,这样您可以以每个 20 美元的价格购买的许可证数量没有上限。

关于c# - 如何将数字转换为价格范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2684261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com