V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rm0gang0rf
V2EX  ›  程序员

请教 满减算法

  •  
  •   rm0gang0rf · 2022-10-07 10:14:12 +08:00 · 2771 次点击
    这是一个创建于 781 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1000 个 sku ,每个 sku 的大小重量价格利润都不一样,现在需要设置满减包邮,包邮的条件是 100 公斤,同时购物车金额达到( 1000 )才可以-10%,请教( 1000 )这个金额能狗算出来吗?

    24 条回复    2022-10-08 09:31:21 +08:00
    learningman
        1
    learningman  
       2022-10-07 10:26:28 +08:00
    你是想找出所有可能的组合吗?那全排列求一遍呗。
    thunderw
        2
    thunderw  
       2022-10-07 10:30:29 +08:00
    满 1000 元打九折咯?难点在哪儿?你是卖东西的,不知道卖了多少钱吗?
    「包邮的条件是 100 公斤」,是说不满 100 公斤包邮?满 100 公斤才包邮?还是包邮只包 100 公斤的部分?
    yehoshua
        3
    yehoshua  
       2022-10-07 10:31:55 +08:00
    描述的需求太不明确。建议重新补充下
    rm0gang0rf
        4
    rm0gang0rf  
    OP
       2022-10-07 10:32:03 +08:00
    @learningman 是想找出 1000 这个金额设置多少才不会赔钱,因为有包邮
    rm0gang0rf
        5
    rm0gang0rf  
    OP
       2022-10-07 10:36:23 +08:00
    @thunderw 体积重量影响最后的运费,运费和 折扣 加起来 不能超出利润,如果超出了,就要增加起始优惠金额(1000)
    gosansam
        6
    gosansam  
       2022-10-07 10:36:36 +08:00
    实时计算当前货物利润 - 当前货物重量对应的邮费 ?
    pendulum
        7
    pendulum  
       2022-10-07 10:37:26 +08:00
    大概明白你的意思了,你是想算 100kg 商品的最大成本
    learningman
        8
    learningman  
       2022-10-07 10:38:14 +08:00
    @rm0gang0rf 一样的啊,全排列求一遍,把每个排列里的利润减价格*10%放到一个递增数组里,找到递增数组里第一个小于 0 的不就是了
    thunderw
        9
    thunderw  
       2022-10-07 10:46:06 +08:00
    我觉得没这么麻烦呐,不用看排列组合。
    你就看所有 sku 里,利润率最低的那个。假设客户就可着这一个买,多少钱不亏就行了啊。
    geelaw
        10
    geelaw  
       2022-10-07 10:47:29 +08:00 via iPhone
    然而我们并不知道体积、重量和运费的关系,如果假设 运费 = max { Vp, Wq } 其中 V 、W 是总体积、总重量且 p 、q 是常数,则可以赋予每个 SKU 包邮时的保守利润估计,那就是

    售价 — 税 — 成本 — max { vp, wq }

    其中 v 、w 是这个 SKU 的体积、重量。

    这是因为同一个 SKU 买很多件,则每件的利润如此。 由此看来如果你要给售价打九折还不亏,就需要

    售价*0.9 — 调整过的税 — 成本 — max { vp, wq }

    非负,这说明可以设置满减的条件是利润本来就大,而且可以设置满减的起始额就是体积、重量的一次函数主导运费的时候(低体积重量的运费并不会变成 0 ,此时上面的计算不可行)。

    更常见的设置应该让满减后依然保有大量利润,否则你无法处理退货之类的问题。

    最后,请多多使用字母表示数的方法,不要用数字表示未知数。
    ericgui
        11
    ericgui  
       2022-10-07 11:26:14 +08:00
    所以你们应该学学 costco ,搞得简单一点,大家都方便,直接就是多少钱 off ,比如一个路由器,可以 70 刀 off ,一台洗衣机,可以 150 刀 off ,

    别扯那么多满减什么的,太复杂了,容易出 bug
    rm0gang0rf
        12
    rm0gang0rf  
    OP
       2022-10-07 11:47:12 +08:00
    @gosansam 不用实时吧,肯定有利润为负数的情况
    rm0gang0rf
        13
    rm0gang0rf  
    OP
       2022-10-07 11:48:17 +08:00
    @pendulum 最大成本 和 (1000)的关系? 因为组合很多 都算一遍?
    rm0gang0rf
        14
    rm0gang0rf  
    OP
       2022-10-07 11:49:39 +08:00
    rm0gang0rf
        15
    rm0gang0rf  
    OP
       2022-10-07 11:51:54 +08:00
    @thunderw 我可能更需要利润为负数的那些情况减少到最少或者最小,或者增加起始优惠金额。
    rm0gang0rf
        16
    rm0gang0rf  
    OP
       2022-10-07 11:57:19 +08:00
    @geelaw 感谢指教~ 我再看看
    rm0gang0rf
        17
    rm0gang0rf  
    OP
       2022-10-07 11:57:56 +08:00
    @ericgui 需要用满减的方式刺激消费者购买
    zhyl
        18
    zhyl  
       2022-10-07 15:13:35 +08:00
    计算出单位公斤下哪个 sku 是最低利润的,然后算出这 100 公斤这个 sku 需要的金额,那么这个打折金额就是利润最小的
    summerLast
        19
    summerLast  
       2022-10-07 16:58:56 +08:00
    @rm0gang0rf : 这个最简单的值就是最坏的情况即最低利润率, 那么
    总金额*利润率-发货成本-其他成本>0 即可 ,也就是 总金额*利润率>发货成本+其他成本
    总金额>(发货成本+其他成本)/利润率
    xiangyuecn
        20
    xiangyuecn  
       2022-10-07 17:09:00 +08:00
    瞎猜了一下,这种场景应该 Excel 的功劳居多
    rm0gang0rf
        21
    rm0gang0rf  
    OP
       2022-10-08 08:31:30 +08:00
    @zhyl 这样是最简单的,但是怎么算出 1000 这个优惠起始金额,单位公斤下还有体积,运费是实重和实际体积,单独算一个是不是不够准确?是不是您的意思?
    rm0gang0rf
        22
    rm0gang0rf  
    OP
       2022-10-08 08:35:04 +08:00
    @summerLast 这个总金额是购物车的总价?还有个数,需要全部的组合?
    rm0gang0rf
        23
    rm0gang0rf  
    OP
       2022-10-08 08:35:33 +08:00
    @xiangyuecn 是的,但是这个应该有技巧的,不用全部排列出来吧 ~
    NullData
        24
    NullData  
       2022-10-08 09:31:21 +08:00
    这个是一个完全背包问题,可以在 leetcode 上看一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1357 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:49 · PVG 01:49 · LAX 09:49 · JFK 12:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.