java传入一个数组{1,2,3},返回123,132,213,231,312,321,求指导.

问题描述:

java传入一个数组{1,2,3},返回123,132,213,231,312,321,求指导.
假如不限制数组个数
1个回答 分类:综合 2014-10-25

问题解答:

我来补答
这个,你看一下,LEN可以自己改.
-------------------------------------------------------------------------
public class demo {
public static void main(String[] args) {
\x05int len = 3;
\x05String[] array = { "1","2","3" };
\x05execute(array,len,"");
}
public static void execute(String[] array,int len,String str) {
\x05for (int i = 0; i < array.length; i++) {
\x05 str += array[i];
\x05 if (str.length() == len) {
\x05\x05System.out.println(str);
\x05 } else {
\x05\x05execute(array,len,str);
\x05 }
\x05 str = str.substring(0,str.length() - 1);
\x05}
}
}
再问: 不限制数组的个数
再答: 昨天晚上改过了,不知道怎么又变回来了 你看一下这个。 ---------------------------------------------------------------------------------------- import java.util.ArrayList; import java.util.List; public class demo { public static void main(String[] args) { String[] array = { "1", "2", "3", "4" }; List list = new ArrayList(); execute(array, list); } public static void execute(String[] array, List list) { for (int i = 0; i < array.length; i++) { if (list.contains(array[i])) { continue; } list.add(array[i]); if (list.size() == array.length) { String str = ""; for (int n = 0; n < list.size(); n++) { str += list.get(n); } System.out.println(str); } else { execute(array, list); } list.remove(list.size() - 1); } } }
再问: 能说下大概思路吗
再答: 循环array list记录放入了那些值, 如果放过了就忽略那个数, 没放过就在list中加入,进入递归过程。 当LIST的长度与array 相等,输出LIST中的。
再问: 不明白add和remove
再答: add是添加元素 remove是移除 用List好判断那些元素添加了, 因为你是不重复的排列.
 
 
展开全文阅读
剩余:2000