最近在開發**專案,其中有乙個需求是使用者下單時如何選擇優惠券的問題。現在有時間總結下三種優惠券組合方式。
先假設乙個場景:
當前有三個商品,分別是商品a\b\c,三個優惠券(假設優惠力度相同),分別是優惠券1\2\3,其中優惠券1可用於商品a\b,優惠券2可用於商品c,優惠券3可用於商品b\c,現在購物車中有a\b\c三個商品,並且三個優惠券也都滿足使用門檻。
組合方式1(有利於**使用者)
首先我們先根據商品進行分層去構造乙個優惠券樹,因為存在三個商品,所以加上根節點,這棵優惠券樹最多可分4層。
優惠券樹的每一層代表一種商品使用優惠券的情況,第一層代表商品a,第二次代表商品b,第三次代表商品c,通過遍歷優惠券樹我們可以發現,最優的組合應該是商品a使用優惠券1,商品b使用優惠券2,商品c使用優惠券3。
組合方式2(有利於**店主)
乙個訂單只能使用一張優惠券,則預設給出滿足條件的最大面值優惠券即可。
組合方式3(兼顧**店主、使用者)
我們還是去構造乙個樹,不過這次構造的是一棵商品數,根據優惠券進行分層,同理這棵樹最多也是4層。
商品樹的每一層代表一種優惠券可用在哪些商品的情況,第一層代表優惠券1,可用於商品a/b,第二次代表優惠券2,可用於商品c,第三層代表優惠券3,可用於商品b/c。通過遍歷商品樹去找到最優組合。
第二種組合方式是最簡單粗暴的方式,直接不允許優惠券疊加使用。
第一種方式和第三種方式的區別在於:如果乙個優惠券可供多個商品使用,是否允許這個優惠券再做拆分。
第一種方式中,最優的組合就同時使用了三張優惠券,其中優惠券1可以同時作用於商品a/b,優惠券3可以同時作用於商品b/c,這種方式就把優惠券1/2進行了拆分,從而使用優惠券1只作用於商品a,優惠券3只作用於商品b。
第三種方式中,最優的組合只能同時使用兩張優惠券,因為這種方式不允許對優惠券進行拆分。如果優惠券1在商品a中使用,則不允許商品b再去使用優惠券。
Java 優惠券最優使用實現
業務需求 使用者可以用優惠券在支付相關費用時減免優惠券對應的金額,優惠券分為三種型別 現金券,代金券,折扣券,需要根據使用者的優惠券列表,找出優惠券金額最多的使用方案。優惠券使用說明 所有優惠券都是分批次的,根據公司活動,按批次進行發放。同批次現金券可以疊加使用,不同批次不可疊加 代金券,折扣券不可...
css繪製卡券優惠券 CSS 實現優惠券樣式
本文將介紹如何使用 css 中的 radial gradient 實現如下圖所示的優惠券樣式效果 繪製基本樣式 首先,我們繪製出優惠券的基本樣式,這很簡單,就不多說了。滿 100 減 30 scss voucher width 600px height 200px display flex left...
加油站優惠券組合方式
奧斯汀需要從他所在的城市去另一座城市,他所在城市和目的城市之間有n個收費站。奧斯汀有m種代金券,價值各不相同,他可以在收費站使用,以便繼續走到下乙個收費站。他有無限量的各種代金券。要從乙個收費站走到另乙個收費站,他必須交納一組價值等於收費站距離的代金券。例如,如果他有價值3和2的代金券,且他需要在距...