`
xiemingmei
  • 浏览: 210504 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

笛卡尔积算法的Java实现

阅读更多
笛卡尔积算法的Java实现:

(1)循环内,每次只有一列向下移一个单元格,就是CounterIndex指向的那列。
(2)如果该列到尾部了,则这列index重置为0,而CounterIndex则指向前一列,相当于进位,把前列的index加一。
(3)最后,由生成的行数来控制退出循环。

public class Test {

	private static String[] aa = { "aa1", "aa2" };
	private static String[] bb = { "bb1", "bb2", "bb3" };
	private static String[] cc = { "cc1", "cc2", "cc3", "cc4" };
	private static String[][] xyz = { aa, bb, cc };
	private static int counterIndex = xyz.length - 1;
	private static int[] counter = { 0, 0, 0 };

	public static void main(String[] args) throws Exception {

		for (int i = 0; i < aa.length * bb.length * cc.length; i++) {
			System.out.print(aa[counter[0]]);
			System.out.print("\t");
			System.out.print(bb[counter[1]]);
			System.out.print("\t");
			System.out.print(cc[counter[2]]);
			System.out.println();

			handle();
		}
	}

	public static void handle() {
		counter[counterIndex]++;
		if (counter[counterIndex] >= xyz[counterIndex].length) {
			counter[counterIndex] = 0;
			counterIndex--;
			if (counterIndex >= 0) {
				handle();
			}
			counterIndex = xyz.length - 1;
		}
	}

}



输出共2*3*4=24行:
aa1 bb1 cc1
aa1 bb1 cc2
aa1 bb1 cc3
aa1 bb1 cc4
aa1 bb2 cc1
aa1 bb2 cc2
aa1 bb2 cc3
aa1 bb2 cc4
aa1 bb3 cc1
aa1 bb3 cc2
aa1 bb3 cc3
aa1 bb3 cc4
aa2 bb1 cc1
aa2 bb1 cc2
aa2 bb1 cc3
aa2 bb1 cc4
aa2 bb2 cc1
aa2 bb2 cc2
aa2 bb2 cc3
aa2 bb2 cc4
aa2 bb3 cc1
aa2 bb3 cc2
aa2 bb3 cc3
aa2 bb3 cc4



  • 大小: 16.8 KB
2
0
分享到:
评论
1 楼 totzc 2017-06-22  
厉害了。算法永不过时

相关推荐

    Java笛卡尔积算法原理与实现方法详解

    Java实现笛卡尔积算法可以使用递归和循环两种方法。下面给出一个示例代码: public class Test { private static String[] aa = {"aa1", "aa2"}; private static String[] bb = {"bb1", "bb2", "bb3"}; private ...

    Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例

    Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例 Java语言中实现未知维度集合的笛卡尔积算法是数据处理和分析中的一个重要问题。本文将主要介绍Java基于递归和循环两种方式实现未知维度集合的笛卡尔...

    javascript笛卡尔积算法实现方法

    JavaScript 笛卡尔积算法是一种用于计算多个集合所有可能的组合的方法。在数学中,笛卡尔积是通过将每个集合中的元素与其他集合的所有元素配对来形成的。在编程中,这通常用于生成所有可能的选项组合,例如在创建...

    Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例

    说明:本人前段时间遇到的求n个数组的所有排列组合的问题,发现笛卡尔积算法可以解决,但是网上搜索的只有Java版本的实现,于是自己试着用python实现,由于新手代码不太规范。 代码:本人封装了一个类Cartesian...

    descartes-sku.js:笛卡尔算法,用于生成商品sku

    笛卡尔乘积算法笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(笛卡尔积),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。功能基于笛卡尔乘积算法基础上编写的一个...

    笛卡尔心形

    接下来,我们将在Java中实现这个算法。首先,我们需要一个可以绘制图形的环境,比如Java的`java.awt.Graphics`类或者JavaFX的`Canvas`。这里我们以`Graphics`为例: ```java import javax.swing.JFrame; import ...

    从n个数组中取出所有排列组合(Java实现)

    总结来说,从n个数组中取出所有排列组合的Java实现涉及到递归算法、回溯法以及数据结构的操作。理解这些概念并能够熟练运用是成为一名优秀程序员的关键。通过这个例子,我们可以看到如何利用Java的灵活性和表达力来...

    计算机图形学算法的java代码

    Java作为一种广泛使用的编程语言,因其跨平台的特性,常常被用来实现计算机图形学的算法。 本压缩包包含的Java代码实现近20个计算机图形学的实例,这为我们提供了深入了解和学习计算机图形学算法的宝贵资源。以下是...

    sgp4算法(tle卫星轨道数据转成笛卡尔系坐标)

    将tle卫星轨道数据转换为笛卡尔系坐标是SGP4算法应用的关键步骤。笛卡尔坐标系统是一个直角坐标系统,用X、Y、Z三个轴表示卫星相对于地球中心的位置。在地球中心固定坐标系(ECF)中,X轴指向春分点,Y轴与赤道面...

    A-star算法实验报告(附源码java)

    A* 算法是一种高效的路径搜索算法,广泛应用于游戏开发、地图导航、机器人路径规划等领域。...通过Java编程实现,展示了算法的基本思想和核心流程,同时也体现了启发式搜索在优化路径搜索效率上的巨大优势。

    java 和 c# 不同的7个方法 实现 ABCD 全排列

    在Java和C#这两个广泛使用的编程语言中,有许多不同的方法可以实现全排列。接下来,我们将深入探讨这两种语言中实现ABCD全排列的7种方法。 1. **回溯法**: 回溯法是一种典型的递归策略,适用于解决约束满足问题。...

    笛卡尔心形图

    java写的笛卡尔心形图,里边用了笛卡尔算法,代码不多..

    七参数坐标转换Java语言代码

    在IT行业中,坐标转换是一项重要的任务,特别是在地理信息系统(GIS)领域。...通过深入理解这些代码,不仅可以学习到坐标转换的原理,还能提升Java编程技能,尤其是处理复杂算法和数值计算的能力。

    基于遗传算法的排课系统

    排课系统的数学模型是将所有课程、班级、教师和教室看作四个集合,通过构建时间教室对的笛卡尔积来表示所有可能的课程安排。排课问题的求解就是找到满足所有约束条件且成本最低(或最高教学效果)的课表配置。通过...

    全面的算法代码仓库全面的算法代码仓库

    使用ISAP算法进行二分图匹配 Bigraph-Matching(Improved-Shortest-Augmenting-Path) 普通的二叉搜索树 Binary-Search-Tree 广度优先搜索 Breadth-First-Search 冒泡排序 Bubble-Sort 桶排序 Bucket-Sort 笛卡尔树 ...

    barsky梁友栋算法

    在"Barsky.c"这个文件中,很可能包含了实现上述算法的C语言代码。通过阅读和理解这段代码,我们可以学习如何在实际项目中应用这个算法,从而处理二维图形的裁剪问题。代码通常会定义线段的数据结构,提供裁剪函数,...

    WGS-84大地坐标转北京-54坐标java源代码;七参数、四参数;坐标转换

    7. **源代码**:提供的Java源代码如`Co_transformation.java`, `Test.java`, `Test_7cansu.java`, `Xiamen_cotrans.java`等,应该是实现了上述坐标转换算法的程序。`BLH.java`, `XYZ.java`, `Pxyz.java`可能是处理...

    java contour

    在Java编程环境中,实现等值线绘制需要掌握特定的算法和库。本篇将深入探讨Java中实现等值线绘制的关键知识点,包括算法原理、相关库的使用以及代码实现。 1. **等值线算法**: - **格网化数据**:等值线绘制的第...

    JAVA 阿基米德螺线 图形化界面 计算机 编程

    在实现这个实验时,可能会用到以下关键的Java类和方法: 1. `javax.swing.JFrame`:主窗口类,用于创建应用的主窗口。 2. `javax.swing.JPanel`:作为自定义绘图组件的基础,继承它并重写`paintComponent`方法。 3....

    计算机二级考试Java真题

    6. **关系表操作**:在关系数据库中,交集操作对应SQL中的INTERSECT,选项A错误,应该选C,笛卡尔积操作对应于CROSS JOIN。 7. **算法复杂度**:算法的空间复杂度和时间复杂度之间没有必然的关系,选项D正确。 8. ...

Global site tag (gtag.js) - Google Analytics