java对指定的二维数组进行排列组合(二维数组+递归)

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值