java源码:
package com.test;
public class Recursion {
public static void main(String[] args) {
// 一维字符串数组
String[] ele = new String[] { "红色,黑色,黄色,紫色", "大,中,小", "金属,混合物,塑料",
"abc,使得双方的,ffff,sfefe" };
StringHandler(ele);
}
/**
*
* 将一维的字符串数组组合成为二维的数组
*
* @param ele
* @return
*/
public static String StringHandler(String[] ele) {
String res = "";
int len = ele.length;
String[] ts = ele[1].split(",");
String[][] abc = new String[len][ts.length];
for (int f = 0; f < ele.length; f++) {
String[] sub = ele[f].split(",");
abc[f] = sub;
}
String[][] ret = doExchange(abc);
String[] result = ret[0];
System.out.println("共有:" + result.length + "种组合!");
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
return res;
}
/**
*
* 使用递归调用将二维数组中的值进行排列组合
*
* @param doubleArrays
* @return
*/
private static String[][] doExchange(String[][] doubleArrays) {
int len = doubleArrays.length;
if (len >= 2) {
int len1 = doubleArrays[0].length;
int len2 = doubleArrays[1].length;
int newlen = len1 * len2;
String[] temp = new String[newlen];
int index = 0;
for (int i = 0; i < len1; i++) {
for (int j = 0; j < len2; j++) {
temp[index] = doubleArrays[0][i] + " | "
+ doubleArrays[1][j];
index++;
}
}
String[][] newArray = new String[len - 1][];
for (int i = 2; i < len; i++) {
newArray[i - 1] = doubleArrays[i];
}
newArray[0] = temp;
return doExchange(newArray);
} else {
return doubleArrays;
}
}
}
输出结果:
共有:144种组合!
红色 | 大 | 金属 | abc
红色 | 大 | 金属 | 使得双方的
红色 | 大 | 金属 | ffff
红色 | 大 | 金属 | sfefe
红色 | 大 | 混合物 | abc
红色 | 大 | 混合物 | 使得双方的
红色 | 大 | 混合物 | ffff
红色 | 大 | 混合物 | sfefe
红色 | 大 | 塑料 | abc
红色 | 大 | 塑料 | 使得双方的
红色 | 大 | 塑料 | ffff
红色 | 大 | 塑料 | sfefe
红色 | 中 | 金属 | abc
红色 | 中 | 金属 | 使得双方的
红色 | 中 | 金属 | ffff
红色 | 中 | 金属 | sfefe
红色 | 中 | 混合物 | abc
红色 | 中 | 混合物 | 使得双方的
红色 | 中 | 混合物 | ffff
红色 | 中 | 混合物 | sfefe
红色 | 中 | 塑料 | abc
红色 | 中 | 塑料 | 使得双方的
红色 | 中 | 塑料 | ffff
红色 | 中 | 塑料 | sfefe
红色 | 小 | 金属 | abc
红色 | 小 | 金属 | 使得双方的
红色 | 小 | 金属 | ffff
红色 | 小 | 金属 | sfefe
红色 | 小 | 混合物 | abc
红色 | 小 | 混合物 | 使得双方的
红色 | 小 | 混合物 | ffff
红色 | 小 | 混合物 | sfefe
红色 | 小 | 塑料 | abc
红色 | 小 | 塑料 | 使得双方的
红色 | 小 | 塑料 | ffff
红色 | 小 | 塑料 | sfefe
黑色 | 大 | 金属 | abc
黑色 | 大 | 金属 | 使得双方的
黑色 | 大 | 金属 | ffff
黑色 | 大 | 金属 | sfefe
黑色 | 大 | 混合物 | abc
黑色 | 大 | 混合物 | 使得双方的
黑色 | 大 | 混合物 | ffff
黑色 | 大 | 混合物 | sfefe
黑色 | 大 | 塑料 | abc
黑色 | 大 | 塑料 | 使得双方的
黑色 | 大 | 塑料 | ffff
黑色 | 大 | 塑料 | sfefe
黑色 | 中 | 金属 | abc
黑色 | 中 | 金属 | 使得双方的
黑色 | 中 | 金属 | ffff
黑色 | 中 | 金属 | sfefe
黑色 | 中 | 混合物 | abc
黑色 | 中 | 混合物 | 使得双方的
黑色 | 中 | 混合物 | ffff
黑色 | 中 | 混合物 | sfefe
黑色 | 中 | 塑料 | abc
黑色 | 中 | 塑料 | 使得双方的
黑色 | 中 | 塑料 | ffff
黑色 | 中 | 塑料 | sfefe
黑色 | 小 | 金属 | abc
黑色 | 小 | 金属 | 使得双方的
黑色 | 小 | 金属 | ffff
黑色 | 小 | 金属 | sfefe
黑色 | 小 | 混合物 | abc
黑色 | 小 | 混合物 | 使得双方的
黑色 | 小 | 混合物 | ffff
黑色 | 小 | 混合物 | sfefe
黑色 | 小 | 塑料 | abc
黑色 | 小 | 塑料 | 使得双方的
黑色 | 小 | 塑料 | ffff
黑色 | 小 | 塑料 | sfefe
黄色 | 大 | 金属 | abc
黄色 | 大 | 金属 | 使得双方的
黄色 | 大 | 金属 | ffff
黄色 | 大 | 金属 | sfefe
黄色 | 大 | 混合物 | abc
黄色 | 大 | 混合物 | 使得双方的
黄色 | 大 | 混合物 | ffff
黄色 | 大 | 混合物 | sfefe
黄色 | 大 | 塑料 | abc
黄色 | 大 | 塑料 | 使得双方的
黄色 | 大 | 塑料 | ffff
黄色 | 大 | 塑料 | sfefe
黄色 | 中 | 金属 | abc
黄色 | 中 | 金属 | 使得双方的
黄色 | 中 | 金属 | ffff
黄色 | 中 | 金属 | sfefe
黄色 | 中 | 混合物 | abc
黄色 | 中 | 混合物 | 使得双方的
黄色 | 中 | 混合物 | ffff
黄色 | 中 | 混合物 | sfefe
黄色 | 中 | 塑料 | abc
黄色 | 中 | 塑料 | 使得双方的
黄色 | 中 | 塑料 | ffff
黄色 | 中 | 塑料 | sfefe
黄色 | 小 | 金属 | abc
黄色 | 小 | 金属 | 使得双方的
黄色 | 小 | 金属 | ffff
黄色 | 小 | 金属 | sfefe
黄色 | 小 | 混合物 | abc
黄色 | 小 | 混合物 | 使得双方的
黄色 | 小 | 混合物 | ffff
黄色 | 小 | 混合物 | sfefe
黄色 | 小 | 塑料 | abc
黄色 | 小 | 塑料 | 使得双方的
黄色 | 小 | 塑料 | ffff
黄色 | 小 | 塑料 | sfefe
紫色 | 大 | 金属 | abc
紫色 | 大 | 金属 | 使得双方的
紫色 | 大 | 金属 | ffff
紫色 | 大 | 金属 | sfefe
紫色 | 大 | 混合物 | abc
紫色 | 大 | 混合物 | 使得双方的
紫色 | 大 | 混合物 | ffff
紫色 | 大 | 混合物 | sfefe
紫色 | 大 | 塑料 | abc
紫色 | 大 | 塑料 | 使得双方的
紫色 | 大 | 塑料 | ffff
紫色 | 大 | 塑料 | sfefe
紫色 | 中 | 金属 | abc
紫色 | 中 | 金属 | 使得双方的
紫色 | 中 | 金属 | ffff
紫色 | 中 | 金属 | sfefe
紫色 | 中 | 混合物 | abc
紫色 | 中 | 混合物 | 使得双方的
紫色 | 中 | 混合物 | ffff
紫色 | 中 | 混合物 | sfefe
紫色 | 中 | 塑料 | abc
紫色 | 中 | 塑料 | 使得双方的
紫色 | 中 | 塑料 | ffff
紫色 | 中 | 塑料 | sfefe
紫色 | 小 | 金属 | abc
紫色 | 小 | 金属 | 使得双方的
紫色 | 小 | 金属 | ffff
紫色 | 小 | 金属 | sfefe
紫色 | 小 | 混合物 | abc
紫色 | 小 | 混合物 | 使得双方的
紫色 | 小 | 混合物 | ffff
紫色 | 小 | 混合物 | sfefe
紫色 | 小 | 塑料 | abc
紫色 | 小 | 塑料 | 使得双方的
紫色 | 小 | 塑料 | ffff
紫色 | 小 | 塑料 | sfefe