笛卡尔积算法「建议收藏」

笛卡尔积算法「建议收藏」/***生成笛卡尔积*@paramdimvalue*@paramresult*@paramlayer*@paramcurList*/privatestaticvoiddescartes(List

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

/** * 生成笛卡尔积 * @param dimvalue * @param result * @param layer * @param curList */
    private static void descartes(List<List<String>> dimvalue, List<List<String>> result, int layer, List<String> curList) { 
   
        if (layer < dimvalue.size() - 1) { 
   
            if (dimvalue.get(layer).size() == 0) { 
   
                descartes(dimvalue, result, layer + 1, curList);
            } else { 
   
                for (int i = 0; i < dimvalue.get(layer).size(); i++) { 
   
                    List<String> list = new ArrayList<>(curList);
                    list.add(dimvalue.get(layer).get(i));
                    descartes(dimvalue, result, layer + 1, list);
                }
            }
        } else if (layer == dimvalue.size() - 1) { 
   
            if (dimvalue.get(layer).size() == 0) { 
   
                result.add(curList);
            } else { 
   
                for (int i = 0; i < dimvalue.get(layer).size(); i++) { 
   
                    List<String> list = new ArrayList<>(curList);
                    list.add(dimvalue.get(layer).get(i));
                    result.add(list);
                }
            }
        }
    }

    /** * 调用生成列表 * @param list * @return */
    public static List<String> result(List<List<String>> list){ 
   
        List<List<String>> result = new ArrayList<>();
        descartes(list, result, 0, new ArrayList<>());
        //重组数据
        List<String> data=new ArrayList<>();
        result.forEach(oList->{ 
   
            StringBuilder sb=new StringBuilder();
            for(int i=0;i<oList.size();i++){ 
   
                sb.append(oList.get(i));
                if(i!=oList.size()-1){ 
   
                    sb.append(",");
                }
            }
            data.add(sb.toString());
        });
        return data;
    }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157421.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月27日 下午6:16
下一篇 2022年7月27日 下午6:36


相关推荐

  • 【Python】Ubuntu修改默认Python版本

    【Python】Ubuntu修改默认Python版本查看Python版本先查看系统中有那些Python版本$ls/usr/bin/python*/usr/bin/python/usr/bin/python2-config/usr/bin/python3m/usr/bin/python2/usr/bin/python3/usr/bin/python-config/usr/bin

    2022年5月27日
    34
  • shell if语句

    shell if语句if语句的一般结构if条件表达式then

    2022年7月27日
    5
  • 张孝祥Java培训视频及孙鑫java视频网址[通俗易懂]

    张孝祥Java培训视频及孙鑫java视频网址[通俗易懂]博主强烈推荐,张老师的JAVA教程帮了我好多,说实话看这个视频比大学老师上课好百倍,张老师的边讲边操作,运动风趣生动的例子的讲课方法对学习JAVA学习者的帮助很大很大…[张孝祥Java培训][基础篇][url]http://www.ancn.cn/zl/java/lesson01.rmvb[/url][url]http://www.ancn.cn/zl/java/les…

    2022年5月17日
    48
  • C# 简单封装一个XML文件读取类

    C# 简单封装一个XML文件读取类

    2021年8月13日
    44
  • idea查看自己的激活码(JetBrains全家桶)

    (idea查看自己的激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlAFH5K5BM31-eyJsa…

    2022年3月30日
    399
  • sql中ddl和dml(sql与access的区别)

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.netDDL和DML之间的主要区别在于:DDL有助于更改数据库的结构,而DML有助于管理数据库中的数据。本质区别DDL代表数据定义语言(DataDefinitionLanguage),是一种有助于创建数据库模式的SQL命令。而DML代表数据操作语言(DataManipulationLanguage),是一种有助于检索和管理关系数据库中数据的SQL命令

    2022年4月15日
    78

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号