购物车中的特殊逻辑算法

本文关键字:算法 购物车 | 更新日期: 2023-09-27 18:34:57

我正在实现一个在 c# 中具有购物车的网站。

假设我的数据库中有这些产品

产品 A 价格 50
产品B价格 50
产品C价格 50
产品D价格 50

用户可以将这些产品添加到他的购物车中。

现在有一个报价正在运行。用户可以购买3件产品A或产品B(这些产品的任意组合 - 产品A的例2和产品B的1或产品A的全部3(,他将免费获得一件。

(所以在这个例子中,如果他买3件,他必须支付100,4然后支付

150和5件,然后他必须支付200,6件也是200(

我如何获得算法''伪代码来实现这一点?

男人的问题在于产品可以按任何顺序添加,例如按此顺序
添加产品 一,一,一

2A,B

A,C,D,B,A

交流,丙,丙,甲

2A表示他在一次操作中添加了2件产品A。(在最后一种情况下,他不会利用这个提议(

请告诉我解决这个问题的最简单方法是什么?任何人都可以指出一些解决此类问题的代码

购物车中的特殊逻辑算法

获取正在购买的产品 A 和产品 B 的总数,然后除以 3 即可查看有多少产品是免费的。例如。

int cost = 50;
int a = numOfProductA();
int b = numOfProductB();
int total = a + b;
int totalFree = total/3;
int totalCost = (total - totalFree)*cost;

可能有一种有效的方法来做到这一点,尽管更多信息会很好:)比如获得 A 或 B 的数字很困难吗?一些显示您已经尝试过的代码会很好。

编辑:作为对您的评论的回应,这将是非常相似的逻辑。我不会给你代码,因为我相信你可以从我之前的例子中自己弄清楚,这将有助于你更好地学习:)但是,粗略地说,我会先找到 5 A 的实例,然后从购买次数中删除它们,然后找出 3 A 或 B 免费项目。(例如,如果 7 A 和 1 B,找到 5 个 A 存在并免费给出两个,然后计算剩余部分,因此 2 A 和 1 B 计算第二个报价(

也许这会帮助你:

交易示例:买 4 PRODUCT_A送 2 PRODUCT_B

变量:

  • numSkuRequired:交易所需的产品数量(在本例中为 4(
  • skuRequired:交易所需的产品(在本例中为PRODUCT_A标识符、SKU/ID 或其他东西(
  • numSkuFree : 免费赠送的产品数量(在本例中为 2(
  • skuFree:免费赠送的产品(在这种情况下PRODUCT_B标识符,SKU/ID或其他东西(
  • quantityLookupRequired购物车中PRODUCT_A的总和数量,默认false
  • quantityLookupFree购物车中PRODUCT_B的总和数量,默认false
  • quantityFree:我们正在寻找的最终结果,用于计算总金额,免费产品数量(PRODUCT_B(,默认0
  • pricePRODUCT_B价格,默认0
  • discount:总折扣金额,默认0

步骤

  1. 在购物车中查找PRODUCT_A的总和,保存在可变quantityLookupRequired
  2. 确保quantityLookupRequired >= numSkuRequired
  3. 在购物车中查找PRODUCT_B总和,保存在可变quantityLookupFree
  4. 确保quantityLookupFree >= numSkuFree
  5. 查找PRODUCT_B的价格并保存在可变price
  6. 循环(见下文(找到quantityFree(编辑器不允许我让它看起来更好抱歉(。
  7. discount将被quantityFree * price

for(int i = 0; i < numSkuRequired + numSkuFree; i <= quantityLookupRequired + quantityLookupFree; i += (numSkuRequired + numSkuFree)) { quantityFree += numSkuFree; } while(quantityFree % numSkuFree != 0)/* don't allow partial discounts */ { quantityFree--; } discount = quantityFree * price;

注意:当交易仅包含 1 种产品时,会采取略有不同的方法(买 4 件PRODUCT_A送 2 件PRODUCT_A(