• 给定数组a[1,2,3],用a里面的元素来生成一个长度为5的数组,打印出其排列组合


    给定数组a[1,2,3],用a里面的元素来生成一个长度为5的数组,打印出其排列组合

    ruby代码:

    def all_possible_arr arr, length = 5
        ret = []
        length.times do
            if ret.empty?
                ret = arr.map {|i| [i]}      
            else
                new_ret = []
                ret.each do |r|
                    arr.each do |e|
                        new_ret << r.clone.unshift(e)
                    end
                end      
                ret = new_ret
            end
        end
        ret
    end
    
    p all_possible_arr [1, 2, 3] 

    JAVA代码:

    package com.test;
    
    import java.util.ArrayList;
    
    public class TestEmu {
    
        @SuppressWarnings("unchecked")
        public ArrayList<ArrayList<Integer>> getArray(ArrayList<Integer> ll, int len) {
            ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
            for (int i = 0; i < len; i++) {
                if (list.size() == 0) {
                    for (int j = 0; j < ll.size(); j++) {
                        ArrayList<Integer> temp = new ArrayList<Integer>();
                        temp.add(ll.get(j));
                        list.add(temp);
                    }
                } else {
                    ArrayList<ArrayList<Integer>> temp = new ArrayList<ArrayList<Integer>>();
                    for (ArrayList<Integer> l : list) {
                        for (int m : ll) {
                            ArrayList<Integer> t = (ArrayList<Integer>) l.clone();
                            t.add(m);
                            temp.add(t);
                        }
                    }
                    list = temp;
                }
            }
            return list;
        }
    
        public static void main(String[] args) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            list.add(1);
            list.add(2);
            list.add(3);
            TestEmu te = new TestEmu();
            ArrayList<ArrayList<Integer>> ll = te.getArray(list, 5);
            for(ArrayList<Integer> l:ll){
                for(int i:l){
                    System.out.print(i+" ");
                }
                System.out.println();
            }        
        }
    
    }

     递归实现:

    package com.test.util;
    
    import java.util.Arrays;
    
    public class Test {
    	
    	private int end;
    	
    	private int[] arr;
    	
    	public void setEnd(int end) {
    		this.end = end;
    	}
    
    	public void setArr(int[] arr) {
    		this.arr = arr;
    	}
    
    	public void test(int[] cur){
    		if(cur.length==end){
    			System.out.println(Arrays.toString(cur));
    			return;
    		}
    		for (int i = 0; i < arr.length; i++) {
    			int[] temp = this.mergeIntArray(cur, new int[]{arr[i]});
    			test(temp);
    		}
    	}
    	
    	private int[] mergeIntArray(int[] arr1, int[] arr2){
    		int[] arr = new int[arr1.length+arr2.length];
    		for (int i = 0; i < arr1.length; i++) {
    			arr[i] = arr1[i];
    		}
    		for (int i = 0; i < arr2.length; i++) {
    			arr[arr1.length+i] = arr2[i];
    		}
    		return arr;
    	}
    	
    	public static void main(String[] args) {
    		Test t = new Test();
    		int[] i = new int[]{1,2};
    		t.setEnd(5);
    		t.setArr(i);
    		for (int j = 0; j < i.length; j++) {
    			t.test(new int[]{i[j]});
    		}
    	}
    	
    }
    
  • 相关阅读:
    Spring (4)框架
    Spring (3)框架
    Spring (2)框架
    javaSE面试题总结 java面试题总结
    分层结构
    三次握手
    17_网络编程
    16_多线程
    Ecplise中指定tomcat里Web项目发布文件
    Web 项目没有发布到我们安装的tomcat目录下
  • 原文地址:https://www.cnblogs.com/zhangfei/p/3332884.html
Copyright © 2020-2023  润新知