我正在尝试创建一个算法,其中方法接受ArrayList并指定输出的长度。该方法的工作是打印指定arraylist的项目的所有可能的排列。例如,如果arraylist是1,2并且给定的长度是3,那么它应该给出输出为 112,122,121,212
答案 0 :(得分:2)
可以通过递归地将所有可能的字符添加到现有结果来构建结果,直到达到所希望的长度。你从空结果开始。 这个算法非常简单:
public static void main(String... arg) {
int n = 2;
int l = 3;
List<String> a = new ArrayList<>();
for (int i = 0; i < n; i++) {
a.add(Integer.toString(i+1));
}
perm(a, "", l);
}
private static void perm(List<String> a, String result, int l) {
if (result.length() == l) {
System.out.println(result);
return;
}
for (int i = 0; i < a.size(); i++) {
String nr = result + a.get(i);
perm(a, nr,l );
}
}
输出:
111
112
121
122
211
212
221
222
答案 1 :(得分:0)
尝试这里给出的解决方案(包括评论部分中的解决方案)
http://www.geeksforgeeks.org/print-all-combinations-of-given-length/