首页 > 其他分享 >优惠叠加单元的所有子叠加单元

优惠叠加单元的所有子叠加单元

时间:2024-05-25 12:50:51浏览次数:19  
标签:叠加 code Coupon 优惠 amount 单元 couponList 共减

求取给定优惠叠加单元的所有子叠加单元。比如优惠A减3元,优惠B减2元,优惠C减1元,优惠A、B、C都可以叠加,在下单页优惠组件默认选中的是优惠A+优惠B+优惠C(共减6元),组件下拉框中同时存在优惠A+优惠B(共减5元)、优惠A+优惠C(共减4元)、优惠B+优惠C(共减3元)、优惠A(共减3元)、优惠B(共减2元)、优惠C(共减1元),用户可以选择优惠组合并进行切换,以上例子输入ABC,返回AB、AC、BC、A、B、C。

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * 求取给定优惠叠加单元的所有子叠加单元。比如优惠A减3元,优惠B减2元,优惠C减1元,优惠A、B、C都可以叠加,
 * 在下单页优惠组件默认选中的是优惠A+优惠B+优惠C(共减6元),组件下拉框中同时存在优惠A+优惠B(共减5元)、优惠A+优惠C(共减4元)、
 * 优惠B+优惠C(共减3元)、优惠A(共减3元)、优惠B(共减2元)、优惠C(共减1元),用户可以选择优惠组合并进行切换,
 * 以上例子输入ABC,返回AB、AC、BC、A、B、C
 */
public class CouponTest {

    private static List<List<Coupon>> couponCombinationStrategy = new ArrayList<>();
    //回溯算法的递归路径
    private static LinkedList<Coupon> trackCouponCombination = new LinkedList<>();

    public static void main(String[] args) {
        Coupon a = new Coupon("A", 3);
        Coupon b = new Coupon("B", 2);
        Coupon c = new Coupon("C", 1);
        List<Coupon> couponList = new ArrayList<>();
        couponList.add(a);
        couponList.add(b);
        couponList.add(c);

        calculateCouponCombinationStrategy(couponList, 0);
        for (List<Coupon> coupons : couponCombinationStrategy) {
            for (Coupon coupon : coupons) {
                System.out.print(coupon);
            }
            System.out.println();
        }
    }

    private static void calculateCouponCombinationStrategy(List<Coupon> couponList, int start) {
        if (trackCouponCombination.size() != couponList.size()) {
            couponCombinationStrategy.add(new ArrayList<>(trackCouponCombination));
        }
        for (int i = start; i < couponList.size(); i++) {
            trackCouponCombination.add(couponList.get(i));
            calculateCouponCombinationStrategy(couponList, i + 1);
            trackCouponCombination.removeLast();
        }
    }


}
class Coupon {
    private String code;

    private int amount;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public int getAmount() {
        return amount;
    }

    public void setAmount(int amount) {
        this.amount = amount;
    }

    public Coupon(String code, int amount) {
        this.code = code;
        this.amount = amount;
    }

    @Override
    public String toString() {
        return "Coupon{" +
                "code='" + code + '\'' +
                ", amount=" + amount +
                '}';
    }
}

 

标签:叠加,code,Coupon,优惠,amount,单元,couponList,共减
From: https://www.cnblogs.com/zhengbiyu/p/18212287

相关文章

  • m基于GA-GRU遗传优化门控循环单元网络的电力负荷数据预测算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下: 优化前:    优化后:    对比:   2.算法涉及理论知识概要      基于遗传算法(GeneticAlgorithm,GA)优化的长门控循环单元(GatedRecurrentUnit,GRU)网络,是一种结合了进化计算与深度学习的混合预测模......
  • EXCEL单元格,只有双击后才会变正常
    选中整列,“数据”--->“分列”--->“分隔符号”--->“下一步”--->“tab键”--->“下一步”--->“常规”--->“完成”如经过以上步骤后数值未能正常显示,选中整列,“设置单元格格式”---->“1234”---->小数位数改为“0”--->“确定”。......
  • .net 直接在DataGridView控件中修改单元格数据,并保存到数据库
    1.获取datagridview单元格修改的内容//单元格的值发生改变时触发事件privatevoiddataGridView1_CellValueChanged(objectsender,DataGridViewCellEventArgse){//获取当前行绑定的内容AppraisalBasesitem=(AppraisalBases)dataGridView1.Rows[e.RowIndex].Da......
  • 【Springboot】复杂单元测试启动类-只测试OpenFeign
    复杂单元测试启动类-只测试OpenFeign背景随着springboot应用工程规模越来越大,集成了较多的自动配置的程序,例如SpringDataJPA,SpringCloudOpenFeign,ApacheDubbo有时会需要在本地运行测试,但要么因为数据库无法在办公网络环境连接,要么注册中心无法连接,这就导致本地完全无......
  • 利用python脚本批量读取当前目录下所有excle表格中特定的单元格内容
    利用python脚本批量读取当前目录下所有excle表格中特定的单元格内容importosfromopenpyxlimportload_workbook#设置要读取的单元格地址cell_address='N18'#遍历当前目录下的所有文件forfilenameinos.listdir('.'):iffilename.endswith(......
  • 利用python脚本批量替换当前目录下所有excle表格中特定的单元格内容
    利用python脚本批量替换当前目录下所有excle表格中特定的单元格内容#导入os模块,用于文件和目录操作importos#导入openpyxl库中的load_workbook函数,用于加载Excel文件fromopenpyxlimportload_workbook#定义一个函数replace_cell_content,用于替换Exc......
  • .net DataGirdView 通过列索引修改单元格字体
    场景是这样、我需要DataGirdView某几列数量大于0字体就变成蓝色,某几列超过标准值字体就变成红色具体列名属性voidInitCols(){varcol=_DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail,"OrderNo","工单号");col.Width=125;......
  • 单元测试
    实验项目名称:实验四单元测试2          一、 实验目的1、 掌握单元测试技术,并按单元测试的要求设计测试用例。 2、 掌握一种单元测试工具的使用。二、 实验内容自行学习C#或python或C++的其中一种单元测试工具的使用,自选一段单元代码(不少于15行),进行测试。完......
  • C# 单元测试工具选择
    由于最近在尝试开发桌面应用,技术选用的是WPF,但是开发起来有点卡手,发现原来缺少了测试工具,花了两天,把主要把主要的测试工具尝试了一下。现有的单元测试工具查阅资料,已知在vsstudio上主要为3款,分别是xUnit,NUnit,以及SMTest,三款工具各有优劣。现有问题三款单元测试都存在无法实......
  • 同单元格内计算加号个数(Power Query)
    问题:一个单元格内若干个加号,计算其个数//非M版let源=Excel.CurrentWorkbook(){[Name="表1"]}[Content],复制的列=Table.DuplicateColumn(源,"名称","名称-复制"),按分隔符拆分列=Table.ExpandListColumn(Table.TransformColumns(复制的列,{{"名称-......