用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);

}

}

}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • 任务型sql

    任务型sql

  • 26.学习Camera之——PDAF(相位对焦)的基本原理

    26.学习Camera之——PDAF(相位对焦)的基本原理在自动对焦的时候总是有一个困惑,知道图像是不清楚的,但是lens应该向前还是向后移动呢?总是要前后移动lens一下才知道,普通的反差法对焦就是这么做的,爬山嘛。PDAF的出现就是为了解决这个lens移动的问题,可以根据图像,预判lens运动的方向。PDAF最早运用在单反上,已经是非常成熟的技术了,原理如下图。左图为CCD在焦后的情况,右图为焦前。当CCD在焦后时,在线阵CCD1和CCD2上会发现聚焦点CCD1的在左,反之,则聚焦点CCD2的在左(图中红色标记的光线)。这种方法需要加.

  • python读取图像的几种方法_python图像识别教程

    python读取图像的几种方法_python图像识别教程python读取图像的几种方式本文介绍几种基于python的图像读取方式:基于PIL库的图像读取、保存和显示基于opencv-python的图像读取、保存和显示基于matplotlib的图像读取、保存和显示基于scikit-image的图像读取、保存和显示基于imageio的图像读取、保存和显示安装方式基本使用pip即可:pipinstallpillowpipinstallscikit-imagepipinstallmatplotlibpipinstallopen

  • 机器学习:随机梯度下降法

    机器学习:随机梯度下降法1.梯度下降  1)什么是梯度下降?      因为梯度下降是一种思想,没有严格的定义,所以用一个比喻来解释什么是梯度下降。         简单来说,梯度下降就是从山顶找一条最短的路走到山脚最低的地方。但是因为选择方向的原因,我们找到的的最低点可能不是真正的最低点。如图所示,黑线标注的路线所指的方向并不是真正的地方。    既然是选择一个方向下山,那么这个方向怎么选…

  • linux 查看当前所有环境变量的两种方法_查看环境变量的命令

    linux 查看当前所有环境变量的两种方法_查看环境变量的命令原文From: http://os.51cto.com/art/201005/202463.htm 系统的环境变量在配置webserver以及编写程序都常常被用到,因此了解必要的关于系统变量的知识是非常有必要的,下面关于linux系统变量的查看以及方法。在Windows下,查看环境变量的命令是:set,这个命令会输出系统当前的环境变量。Linux下Linux查看环境变量准确…

  • goland 激活码(注册激活)

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

发表回复

您的电子邮箱地址不会被公开。

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