用java实现笛卡尔积_Java实现笛卡尔积

用java实现笛卡尔积_Java实现笛卡尔积publicclassSingleton{privatestaticSingletonintance;privateSingleton(){}publicstaticSingletongetInstance(){/**一开始多线程进来,遇到锁,一个线程进去,是为空,new对象;后续线程进入,不为空,不操作;最后直接返回*对象不为/***笛卡尔积工具类….

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

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

public class Singleton { private static Singleton intance; private Singleton() {} public static Singleton getInstance() { /* * 一开始多线程进来,遇到锁,一个线程进去,是为空,new对象; 后续线程进入,不为空, 不操作;最后直接返回 * 对象不为

/**

* 笛卡尔积工具类.

*

*

*

*

* @author 啸白腥

* @since $Rev$

*

*/

public class CrossUtils {

// ~ Static Fields

// ==========================================================================

// ~ Fields

// ==========================================================================

// ~ Constructors

// ==========================================================================

// ~ Methods

// ==========================================================================

/**

* 产生笛卡尔积组合.

*

* @param crossArgs 信息组合。

*


* 格式:{

* { 1, 2, 3 },

* { a, b, c, d },

* { A, B, C },

* …

* }

*

*

* @return 笛卡尔积组合结果

*/

public static List> cross(List> crossArgs) {

// 计算出笛卡尔积行数

int rows = crossArgs.size() > 0 ? 1 : 0;

for (List data : crossArgs) {

rows *= data.size();

}

// 笛卡尔积索引记录

int[] record = new int[crossArgs.size()];

List> results = new ArrayList>();

// 产生笛卡尔积

for (int i = 0; i < rows; i++) {

List row = new ArrayList();

// 生成笛卡尔积的每组数据

for (int index = 0; index < record.length; index++) {

row.add(crossArgs.get(index).get(record[index]));

}

results.add(row);

crossRecord(crossArgs, record, crossArgs.size() – 1);

}

return results;

}

/**

* 产生笛卡尔积当前行索引记录.

*

* @param sourceArgs 要产生笛卡尔积的源数据

* @param record 每行笛卡尔积的索引组合

* @param level 索引组合的当前计算层级

*/

private static void crossRecord(List> sourceArgs, int[] record, int level) {

record[level] = record[level] + 1;

if (record[level] >= sourceArgs.get(level).size() && level > 0) {

record[level] = 0;

crossRecord(sourceArgs, record, level – 1);

}

}

}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java中级面试题及答案整理「建议收藏」

    Java中级面试题及答案整理「建议收藏」1、webservice是什么?webservice是一种跨编程语言和跨操作系统的远程调用技术,遵循SOPA/WSDL规范。2、springCloud是什么?springcloud是一个微服务框架,并提供全套分布式系统解决方案。支持配置管理,熔断机制,leader选举,服务治理,分布式session,微代理,控制总线,智能路由,一次性token。3、Java中堆和栈有什么不同?…

    2022年6月28日
    34
  • centos7.0 可以访问HTML文件,不能访问PHP文件,因为php-fpm没有扩展包

    centos7.0 可以访问HTML文件,不能访问PHP文件,因为php-fpm没有扩展包

    2021年10月19日
    47
  • 输入成绩,若大于60分,则输出通过_输入一个成绩输出成绩等级

    输入成绩,若大于60分,则输出通过_输入一个成绩输出成绩等级1、给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E.要求:(1)分别用if语句和switch语句实现;(2)当输入非法数据(如负数)时,应给出“输入数据错误“信息switch语句实现:#includeintmain(){intscor

    2022年9月20日
    2
  • ffmpeg 安装(支持h.265)

    ffmpeg 安装(支持h.265)安装FFMPEG需要的所有组件sudoapt-getupdatesudoapt-get-yinstallautoconfautomakebuild-essentiallibass-devlibfreetype6-dev\libsdl2-devlibtheora-devlibtoollibva-devlibvdpau-devlibvorbis-devl…

    2022年9月12日
    2
  • 硬核!用Mac Mini翻新了一台12年前的电脑

    硬核!用Mac Mini翻新了一台12年前的电脑本文转载自差评君有这么一位差友,不知道从哪儿加到了托尼的微信,都还没打招呼呢,上来就向我展现了他最近的硬核杰作。他将M1款的MacMini塞进了09年款27寸iMac,并把详细过程一股脑发给了我。尽管不清楚这样做有什么意义,但确实是做的很硬核,手法也相当专业,简单来说,他愣是把一台新电脑,塞进了一台老电脑。。。整理了一下他发过来的内容,大致弄清了这事儿的前因后果。把M1款的Macmini,塞进了09年iMac的想法,是他在看到了油管上有一位叫L…

    2022年5月30日
    88
  • pycharm2021.12.4最近激活码【中文破解版】

    (pycharm2021.12.4最近激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html41MD9IQHZL-eyJsaWNlbnNlSW…

    2022年3月30日
    44

发表回复

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

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