折券
折扣分类洗护折扣家电折扣美妆折扣凑单攻略凑单计算器折扣百科
折券

实时折扣聚合 + 凑单计算器,算法帮你省到极致。

热门工具

  • 折扣分类大全
  • 凑单计算器
  • 家电折扣
  • 满减凑单攻略
  • 折扣百科

合作伙伴

  • 十块购
  • 爱券网
  • UU好店
  • 折券
  • 一起比价
  • 熊猫123

© 2026 折券 - www.zhequan.cc

首页/折扣百科/折扣算法
折扣算法

跨店满减最优凑单算法:数学建模与求解

大促凑单不是拍脑袋加商品,而是可以用数学建模求解的优化问题。本文从贪心、枚举到动态规划,逐层拆解最优凑单算法,配合真实商品价格推演,帮你用最小额外支出拿下满减优惠。

2026年7月14日6 分钟阅读2693 字

大促凑单,为什么你总是凑不好?

每次双11、618打开购物车,面对满300减50的跨店满减规则,你是不是也有过这样的困惑:想买的东西总价278元,差22元才能满减,加什么商品最划算?加了之后又担心"为了凑单买不需要的东西"。这其实是一个经典的凑单算法问题——如何在最少额外支出下,最大化满减优惠。

本文将这个问题抽象为数学模型,给出可操作的最优凑单组合求解方法。无论是凑满300减50,还是满200减30,这套方法论都适用。

凑单问题的数学定义

什么是凑单

在跨店满减场景中,凑单指的是:当你的目标商品总金额未达到满减门槛时,通过添加额外商品使得总金额达标,从而获得满减优惠的行为。

本质上,凑单是一个受约束的优化问题:

给定目标商品集合 T(你想买的商品),总金额为 S(< 门槛 M),从可选商品池 P 中选取一个或多个商品加入购物车,使得最终总金额 ≥ M,且额外支出最小化。

形式化模型

用数学语言描述:

已知:
  M = 满减门槛(如 300 元)
  S = 目标商品总金额(S < M)
  G = 满减优惠金额(如 满300减50 → G = 50)
  P = 可选凑单商品池,每个商品有价格 pᵢ

目标:
  找到凑单商品子集 C ⊆ P,使得:
    minimize: Σ(pᵢ) - G(净额外支出)
    subject to: S + Σ(pᵢ) ≥ M(满足门槛)

这本质上是一个带约束的最小化问题,与经典的背包问题有相似之处,但约束条件和目标函数有所不同。

三种求解策略对比

策略一:贪心凑单(最常用,不保证最优)

贪心策略的核心思路是:选最接近差额的单个商品。

步骤 操作
① 计算差额 D = M - S
② 在商品池中找到价格最接近 D 且 ≥ D 的商品
③ 如果没有单个商品满足,选价格最接近 D 的多个商品

优点:计算简单,快速决策 缺点:可能不是全局最优解——两个便宜商品的组合可能比一个贵商品更划算

策略二:枚举搜索(小规模商品池最优解)

当可选凑单商品数量较少时(比如限定在10个以内),枚举所有组合可以找到精确的最优解。

算法伪代码:

def optimal_coupon(S, M, G, products):
    best_cost = ∞
    best_combo = []
    n = len(products)
    
    for mask in range(1, 1 << n):  # 枚举所有非空子集
        total_extra = 0
        combo = []
        for i in range(n):
            if mask & (1 << i):
                total_extra += products[i].price
                combo.append(products[i])
        
        if S + total_extra >= M:
            net_cost = total_extra - G
            if net_cost < best_cost:
                best_cost = net_cost
                best_combo = combo
    
    return best_combo, best_cost

时间复杂度为 O(2^n),n ≤ 15 时可在合理时间内求解。

策略三:动态规划(大规模商品池最优解)

当商品池较大时,动态规划是更高效的解法。将问题转化为:

在商品池中选取子集,使总价格在 [D, D+Δ] 区间内,且总价格最小化。

def dp_optimal_coupon(S, M, G, products):
    D = M - S  # 需要凑的差额
    max_price = max(p.price for p in products)
    MAX_SUM = D + max_price  # 搜索上界
    
    # dp[i] = 能否恰好凑到金额 i
    dp = [False] * (MAX_SUM + 1)
    dp[0] = True
    
    for p in products:
        for j in range(MAX_SUM, p.price - 1, -1):
            if dp[j - p.price]:
                dp[j] = True
    
    # 找到 ≥ D 的最小可达金额
    for i in range(D, MAX_SUM + 1):
        if dp[i]:
            return i - G  # 净额外支出
    
    return None  # 无法凑到门槛

时间复杂度 O(n × max_price),空间复杂度 O(max_price)。

三种策略对比

维度 贪心 枚举 动态规划
时间复杂度 O(n) O(2^n) O(n×max_price)
是否保证最优 否 是(n≤15) 是
适用场景 快速决策 精选少量候选 大量候选商品
实现复杂度 低 低 中
实际推荐指数 ★★★☆☆ ★★★★☆ ★★★★★

真实案例:三组凑单方案实测

以下用京东平台上实际商品价格做凑单推演。假设大促规则:跨店满300减50。

场景设定

你计划购买以下目标商品:

商品 到手价
德佑悬挂式洗脸巾 160抽×4提 ¥62.91
惠润洗发水 600ml×2瓶 ¥89.90
漫花抽纸 5层400张×18包 ¥27.90
目标商品合计 S ¥180.71

差额定 D = 300 - 180.71 = ¥119.29。满减优惠 G = ¥50。

可选凑单商品池

在京东搜索日用品,筛选自营+有优惠券,得到以下候选:

编号 商品 到手价 品类
A 五月花抽纸 2层200抽×36盒 ¥144.00 纸品
B 德佑婴儿柔纸巾 120抽×30包 ¥111.51 纸品
C 维达超韧抽纸 3层120抽×24包 ¥49.90 纸品
D 蓝月亮洗衣液 3kg×2瓶 ¥59.90 清洁
E 佳洁士牙膏 180g×3支 ¥35.90 个护
F 舒肤佳沐浴露 720ml×2瓶 ¥69.90 个护

方案A:贪心策略

选最接近差值119.29的单个商品:B(德佑柔纸巾 ¥111.51)

项目 金额
目标商品 ¥180.71
凑单商品 B ¥111.51
总金额 ¥292.22
满减后 ❌ 未达300门槛,不享受满减

单个商品不够,尝试贪心双商品。找总和最接近119.29的组合:

  • C + D = 49.90 + 59.90 = ¥109.80
  • C + F = 49.90 + 69.90 = ¥119.80
  • E + D = 35.90 + 59.90 = ¥95.80
  • E + F = 35.90 + 69.90 = ¥105.80

最优组合:C + F = ¥119.80(超过119.29仅0.51元)

项目 金额
目标商品 ¥180.71
凑单 C + F ¥119.80
合计 ¥300.51
满减后 ¥250.51
净额外支出 ¥119.80 - ¥50 = ¥69.80

方案B:枚举搜索

枚举所有满足 S + 凑单 ≥ 300 的组合(6个商品,64种子集),找出净额外支出最小的:

凑单组合 总金额 满减后支付 净额外支出
C + D ¥290.51 ❌ 不达标 —
C + F ¥300.51 ¥250.51 ¥69.80
D + F ¥310.51 ¥260.51 ¥79.80
C + D + E ¥326.41 ¥276.41 ¥95.70
A ¥324.71 ¥274.71 ¥94.00
B ¥292.22 ❌ 不达标 —

枚举最优解 = C + F,净额外支出 ¥69.80,与贪心结果一致。

方案C:差额复用——更优解

但如果改变思路:凑单商品也可以是"本来就需要但略超预算"的东西,比如把 B(德佑柔纸巾 120抽×30包 ¥111.51)单独拿下:

方案 凑单组合 额外支出 净支出 获得商品
贪心/枚举 C + F ¥119.80 ¥69.80 抽纸+沐浴露
差额复用 B ¥111.51 ¥61.51 柔纸巾30包

差额复用方案净支出仅 ¥61.51,比贪心少花了 ¥8.29,且只加了一个商品!这是因为 B 虽然单价 ¥111.51 未满差额,但总金额 180.71 + 111.51 = 292.22,仍不够300!

这是一个关键陷阱:贪心可能找到的是"总金额刚好过门槛"但凑单品组合总价更高的解。

实际上,正确的解法应该考虑更大范围的候选。如果加入一个 ¥120-130 区间的商品:

假设商品 X ¥124.90
方案 凑单 额外支出 净支出
X 单独 ¥124.90 ¥74.90
B + E ¥147.41 ¥97.41
C + D + E ¥145.70 ¥95.70

最优单商品 X 净支出 ¥74.90,不如 C+F 组合的 ¥69.80。

结论:不存在绝对的最优策略,最优解依赖具体商品池。使用动态规划是找到真最优的最佳方式。

凑单的四个实用心法

心法1:锁定「差额定」的黄金区间

差额定 D = M - S 是关键。凑单商品的理想价格范围是 D 到 D+30 元。太便宜需要多个,太贵不划算。

比如差额定 119.29 元,优先找 120-150 元的商品。

心法2:优先选择「硬通货」

最适合凑单的品类:纸品、清洁用品、个护、粮油调味——这些是消耗品,囤了迟早用得上。避免凑单"冲动消费品",比如一件"看起来不错"的衣服。

推荐凑单品 不推荐凑单品
抽纸/卷纸/湿巾 不急需的服饰
洗衣液/洗洁精 电子产品配件
牙膏/洗发水/沐浴露 装饰品/摆件
米面粮油/调味料 不确定尺码的鞋

心法3:善用平台「凑单推荐」

淘宝和京东在购物车页面通常有"再凑XX元享满减"的智能推荐模块,这些推荐商品往往是同店铺或同品类的低价商品。优先从这里挑选,因为:

  • 确保参与跨店满减
  • 价格阶梯合理
  • 通常能叠加店铺券

心法4:多档满减的跳跃策略

部分大促有多档满减,如满200减30 + 满300减50。如果目标商品总价在200附近,需要权衡:

跳到300档需要额外凑100元,但多减20元。净收益 = 20 - 额外凑单成本。如果凑单买的是必需品,净收益为正则值得跳档。

计算一下:

方案 目标商品 凑单 总支付 获得(目标+凑单)
200档 ¥180.71 ¥19.29 ¥170.00 ¥200.00 价值
300档 ¥180.71 ¥119.80 ¥250.51 ¥300.51 价值

跳档到300:多花 ¥80.51,但多获得 ¥100.51 价值的商品。如果凑单商品都是需要的,实际赚了 ¥20。

常见误区与避坑指南

误区1:「凑了就退」

很多人想"凑单后把凑单商品退了",但跨店满减订单中,退款会导致满减优惠按比例重新计算。如果凑单商品退款后总额不达标,需要补回满减金额。

正确做法:凑单买消耗品,用得上的东西。

误区2:「随便加一个就行」

拍脑袋加商品往往导致净额外支出过高。以本文案例为例,如果随手加了商品 A(¥144),净额外支出高达 ¥94,比最优方案多花 ¥24.20。

误区3:「越接近门槛越好」

追求"刚好达标"是合理的,但前提是凑单商品确实是需要的。为了"0.51元差额"加一个 ¥49.90 的沐浴露,如果家里已经有囤货,本质上就是 50 元换了 50 元优惠 = 0 净收益。

总结与建议

核心结论:

  1. 凑单的本质是约束优化:在满足满减门槛的前提下,最小化额外的净支出。用动态规划可以找到精确的最优解。
  2. 没有放之四海皆准的最优策略:贪心、枚举、DP 各有适用场景。日常购物推荐使用枚举法(候选商品10个以内),复杂场景使用动态规划。
  3. 凑单商品选消耗品:纸品、清洁、个护等刚需消耗品是最佳凑单选择,避免"为了满减而满减"。

实操建议清单:

  • 大促前盘点家中消耗品库存,列出"可凑单清单"
  • 计算差额定 D,在 D~D+30 区间内搜索凑单候选
  • 使用 折券凑单计算器 快速算出最优组合
  • 检查凑单商品是否参与跨店满减(认准活动标签)

相关阅读:

  • 满减叠加的最优顺序:折扣数学的深度拆解 — 了解满减与券的叠加优先级
  • 折扣率计算公式详解:3种算法场景与实例 — 掌握折扣率计算方法
  • 跨店满减是什么?规则、限制与常见误区 — 跨店满减基础概念入门

本文由折小算原创,数据来源为京东平台实时商品价格。商品价格以购买时实际页面为准。

分享
小红书微博
#凑单算法#满减凑单#跨店满减#折扣数学#购物策略

用凑单计算器验证本文结论

输入满减门槛和购物车金额,自动计算最优凑单方案

相关工具

凑单计算器凑单攻略折扣分类

更多省钱工具

十块购

实时优惠价格,覆盖淘宝天猫全网商品

爱券网

隐藏优惠券与省钱攻略,叠券凑单一站式

UU好店

全平台导购工具,AI 智能选品推荐

一起比价

全平台比价工具+价格追踪,数据说话

熊猫123

购物导航门户,品牌聚合入口

本文目录
  • 大促凑单,为什么你总是凑不好?
  • 凑单问题的数学定义
  • 什么是凑单
  • 形式化模型
  • 三种求解策略对比
  • 策略一:贪心凑单(最常用,不保证最优)
  • 策略二:枚举搜索(小规模商品池最优解)
  • 策略三:动态规划(大规模商品池最优解)
  • 三种策略对比
  • 真实案例:三组凑单方案实测
  • 场景设定
  • 可选凑单商品池
  • 方案A:贪心策略
  • 方案B:枚举搜索
  • 方案C:差额复用——更优解
  • 凑单的四个实用心法
  • 心法1:锁定「差额定」的黄金区间
  • 心法2:优先选择「硬通货」
  • 心法3:善用平台「凑单推荐」
  • 心法4:多档满减的跳跃策略
  • 常见误区与避坑指南
  • 误区1:「凑了就退」
  • 误区2:「随便加一个就行」
  • 误区3:「越接近门槛越好」
  • 总结与建议

相关文章

折扣算法

预售定金膨胀计算:定金抵扣比例与最优方案

20元膨胀成40元看起来翻倍了,实际能省多少?本文拆解定金膨胀的三个核心计算公式,对比不同倍率和价格下的真实折扣率,揭示膨胀叠加满减时的致命陷阱,用五个判断标准和三步检查法帮你选出最优膨胀方案。

折扣算法

88VIP折扣叠加计算:95折与满减的最优组合

88VIP 95折和跨店满减,先算哪个更划算?本文用数学公式和实战案例,逐层拆解88VIP折扣叠加的正确计算顺序,帮你避免95折掉档的隐藏陷阱。

折扣算法

折扣率计算公式详解:3种算法场景与实例

用京东联盟真实商品数据拆解折扣率计算:直降、满减叠加、多件凑单三种场景的公式与实例,帮你算清每笔订单的真实优惠力度。

折扣算法

满减叠加的最优顺序:折扣数学的深度拆解

电商大促期间,满减、店铺券、平台券、红包往往可以叠加使用。但叠加顺序不同,最终价格可能差几十元。本文用分段函数和数值实验,推导出最优叠加顺序的通用规律。