用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql server2019安装步骤 不支持此版本win10_浏览sql server2019安装介质

    sql server2019安装步骤 不支持此版本win10_浏览sql server2019安装介质SQLServer2019安装步骤文章分为四部分sqlserver安装失败指南(首看,本人下载中遇到的)下载安装sqlserver安装图形化界面ssms创建数据库安装失败以及解决措施下载安装SQLServer进行到第五步时,我这里进行了报错。错误是:thereisaproblemwiththiswindowsinstallerpackage.Aprogramrunaspartofthesetupdidnotfinshasexpectd.

    2022年8月31日
    4
  • 杭州电 1203 I NEED A OFFER!

    杭州电 1203 I NEED A OFFER!

    2022年1月8日
    42
  • C51单片机LCD1602驱动程序

    C51单片机LCD1602驱动程序C51单片机LCD1602驱动程序LCD1602简介1602的引脚操作时序写操作时序时序参数LCD1602关键性操作一、初始化二、清屏指令二、进入模式设置指令三、显示开关控制指令四、功能设定指令RAM地址映射图LCD1602简介LCD1602字符型液晶(每行显示16个字符,一共可以显示两行)——一种专门用来显示字母、数字、符号的点阵型液晶模块。它由若干个57或者510的点阵字符组成,每个点阵字符位都可以用来显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此

    2022年7月16日
    16
  • OutputDebugString()

    OutputDebugString()

    2021年12月14日
    52
  • hpe服务器安装操作系统_hp 服务器 电话

    hpe服务器安装操作系统_hp 服务器 电话服务器安装操作系统才能对服务器进行很好的操作,但是新购买的服务器要如何安装操作系统呢?其实服务器系统安装通常有两种方法:用服务器引导光盘引导安装(HPProliant系列服务器100系列设备随机光盘SupportCD没有引导安装操作系统的功能)、用操作系统光盘加载阵列卡驱动引导安装。  用操作系统光盘直接安装操作系统  通常情况下重新安装操作系统,数据盘的重要数据需要保

    2022年10月4日
    3
  • 一步一步写算法(之hash表)

    一步一步写算法(之hash表)

    2021年11月23日
    50

发表回复

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

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