代码-java排列组合出所有的结果

问题描述

java排列组合出所有的结果

代码:

 List<String[]> list = new ArrayList<String[]>();
        String[] str = new String[1];
        str[0] = "a1";
        list.add(str);
        str = new String[3];
        str[0] = ",b1";
        str[1] = ",b2";
        str[2] = ",b3";
        list.add(str);
        str = new String[2];
        str[0] = ",c1";
        str[1] = ",c2";
        list.add(str);
        str = new String[2];
        str[0] = ",e1";
        str[1] = ",e2";
        list.add(str);
        str = new String[4];
        str[0] = ",d1";
        str[1] = ",d2";
        str[2] = ",d3";
        str[3] = ",d4";
        list.add(str);

我想的到所有组合的结果,不过每个数据的下标不能变
就好比:

  • 1. a1,b1,c2,d1,e1
  • 1. a1,b1,c2,d1,e1
  • 1. a1,b1,c2,d1,e1
  • 1.
  • 1. a1,b2,c2,d1,e1
  • 1. a1,b2,c2,d1,e1
  • 1. a1,b2,c2,d1,e1
  • 1.
  • 1. a1,b3,c2,d1,e1
  • 1. a1,b3,c2,d1,e1
  • 1. a1,b3,c2,d1,e1
  • 1.
  • 1. a1,b1,c1,d2,e1
  • 1. a1,b1,c1,d2,e1
  • 1. a1,b1,c1,d2,e1
  • 1.
  • 1. a1,b2,c1,d2,e1
  • 1. a1,b2,c1,d2,e1
  • 1. a1,b2,c1,d2,e1
  • 1.
  • 1. a1,b3,c1,d2,e1
  • 1. a1,b3,c1,d2,e1
  • 1. a1,b3,c1,d2,e1
  • 1.
  • 1. a1,b1,c2,d2,e1
  • 1. a1,b1,c2,d2,e1
  • 1. a1,b1,c2,d2,e1
  • 1.
  • 1. a1,b2,c2,d2,e1
  • 1. a1,b2,c2,d2,e1
  • 1. a1,b2,c2,d2,e1
  • 1.
  • 1. a1,b3,c2,d2,e1
  • 1. a1,b3,c2,d2,e1
  • 1. a1,b3,c2,d2,e1
  • 1.
  • 1. a1,b1,c3,d2,e1
  • 1. a1,b1,c3,d2,e1
  • 1. a1,b1,c3,d2,e1
  • 1.
  • 1. a1,b2,c3,d2,e1
  • 1. a1,b2,c3,d2,e1
  • 1. a1,b2,c3,d2,e1
  • 1.
  • 1. a1,b3,c3,d2,e1
  • 1. a1,b3,c3,d2,e1
  • 1. a1,b3,c3,d2,e1
    ....
    怎么用Java循环出来啊

解决方案

java排列组合
----------------------

解决方案二:

不知道你的1是什么意思

 public void  listString(list,index){
  if(index == list.size()){
          System.out.println();
    }
    String[] s = list.get(index);
    for(int i = 0; i < s.length(); i++){
      if(index == 0){
             System.out.print(s[i]);
        }
      else{
             System.out.print("," + s[i]);
        }
        listString(list,index+1);
    }
}

解决方案三:

 import java.util.*;
public class FullPermutation
{
    public static void main(String[] args)
    {
        System.out.println("Hello World!");
        List<String[]> list = new ArrayList<String[]>();
        String[] str = new String[1];
        str[0] = "a1";
        list.add(str);
        str = new String[3];
        str[0] = "b1";
        str[1] = "b2";
        str[2] = "b3";
        list.add(str);
        str = new String[2];
        str[0] = "c1";
        str[1] = "c2";
        list.add(str);
        str = new String[2];
        str[0] = "e1";
        str[1] = "e2";
        list.add(str);
        str = new String[4];
        str[0] = "d1";
        str[1] = "d2";
        str[2] = "d3";
        str[3] = "d4";
        list.add(str);
        for(String[] s : list){
            System.out.println(Arrays.toString(s));
        }
        System.out.println("--------------");
        fullPermutation(list,0,null);
    }
    public static void fullPermutation(List<String[]> list,int index,List<String> result){
        if(index == list.size()){
            System.out.println(result);
            return;
        }
        String[] s = list.get(index);
        for(int i = 0; i < s.length; i++){
          if(index == 0){
                result = new ArrayList<String>();
                result.add(s[i]);
            }
          else{
                result.add(s[i]);
            }
            fullPermutation(list,index + 1,result);
            result.remove(s[i]);
        }
    }
}
时间: 2024-11-09 19:40:55

代码-java排列组合出所有的结果的相关文章

java 排列组合-求大神帮我看看这段代码,打印完“12345”结束for循环后为什么还能继续运行?新手没金币,抱歉!

问题描述 求大神帮我看看这段代码,打印完"12345"结束for循环后为什么还能继续运行?新手没金币,抱歉! public class Test { public static void main(String[] args) { prints(0 0 0 0 0);}public static void prints(int k1int k2int k3int k4int k5){ if(k5!=0){ System.out.println(k1*10000+k2*1000+k3*1

java算法-求可变参数的排列组合代码思想?就是 m从选n个 作为组合 m是可变的 n也是?如何解

问题描述 求可变参数的排列组合代码思想?就是 m从选n个 作为组合 m是可变的 n也是?如何解 求可变参数的排列组合代码思想?就是 m从选n个 作为组合 m是可变的 n也是?如何解 解决方案 这个简单,就是递归. 从m选n的算法可以分解为 for each 遍历m,选取1个+ (从剩下的m-1个元素中任选n-1个) 直到从1个元素中选择1个.

计算排列组合的php代码

前些天因为业务需要写了一段计算排列组合的代码,今天整理了一下,以备后用 <?php/** * 要解决的数学问题    :算出C(a,1) * C(b, 1) * ... * C(n, 1)的组合情况,其中C(n, 1)代表从n个元素里任意取一个元素 * * 要解决的实际问题样例:某年级有m个班级,每个班的人数不同,现在要从每个班里抽选一个人组成一个小组, *                       由该小组来代表该年级参加学校的某次活动,请给出所有可能的组合 */ /* ##########

关于各种排列组合java算法实现方法

一.利用二进制状态法求排列组合,此种方法比较容易懂,但是运行效率不高,小数据排列组合可以使用 复制代码 代码如下: import java.util.Arrays; //利用二进制算法进行全排列 //count1:170187 //count2:291656 public class test { public static void main(String[] args) { long start=System.currentTimeMillis(); count2(); long end=S

java数组-Java计算排列组合 用java计算0,1,2,3这三个数每一行出现一个数,共有15行这样的数,如何求

问题描述 Java计算排列组合 用java计算0,1,2,3这三个数每一行出现一个数,共有15行这样的数,如何求 用java计算0,1,2,3这三个数每一行出现一个数,共有15行这样的数,如何求 解决方案 我觉得你的问题实在是很模糊,我刚好对java多线程懂一些,所以多问两句: 计算的是什么样的排列组合? 0,1,2,3 的 15行这样的数是哪样的数? 三个数? 每一行出现一个数? 麻烦解释一下~ 另外一个小建议:以后不要这样提问题啦~那些懂的人就算看到也会懒得回答的哦.提问要清晰明确~ 解决方

利用java算法排列组合父节点下的子节点

问题描述 利用java算法排列组合父节点下的子节点 一个item下有多个父节点,一个父节点下面有多个子节点,通过遍历父节点把每个父节点的子节点遍历出来,然后对子节点进行组合,求大神帮我补全代码 List parents = mrItemDimCombMybatisDao.getAllParentByItem(itemId); for (MrItemDim parent : parents) { List sons = mrItemDimCombMybatisDao.getAllSonByPare

关于各种排列组合java算法实现方法_java

一.利用二进制状态法求排列组合,此种方法比较容易懂,但是运行效率不高,小数据排列组合可以使用 复制代码 代码如下: import java.util.Arrays; //利用二进制算法进行全排列//count1:170187//count2:291656 public class test {    public static void main(String[] args) {        long start=System.currentTimeMillis();        count

java字符串组合排列递归问题

问题描述 java字符串组合排列递归问题 String a0,a1,a2,...,an; a0="我饿全文"; a1="ABC"; a2="abc"; '''' an="wre"; 每次从每个an中只取一个字符组合成字符串,全部排列出来,如: 我+A+a+w,我+A+a+r等.这个怎么弄啊? 解决方案 /* package whatever; // don't place package name! */ import jav

源代码-按书上写了一段java捕获异常的代码,不知道问题出在哪里

问题描述 按书上写了一段java捕获异常的代码,不知道问题出在哪里 源代码如下: package com.Sixping.Ncre; public class Rethrow { public static void rt() throws Exception {//定义方法,抛出Exception类的异常 System.out.println("old exception in rt()"); throw new Exception("thrown from rt()&qu