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

2023-05-23,,

给定数组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]});
}
} }

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

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

下载本文的Word格式文档,以方便收藏与打印。