java – 二维arraylist的排列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 二维arraylist的排列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1768字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试制作一个二维数组列表,其中包含递归的每个可能的组合,例如1,2,3,4.
没有双倍的上升.
例如.
1,0,0
2,0,0
3,0,0
4,0,0
1,2,0
1,3,0
1,4,0
1,2,3
等等…
到目前为止我有
//this gives me all my numbers
for(int i =0;i<arraySize;i++)
index[i] = i;
// and is the part that make the combinations
for(int i = 0;i<arraySize;i++){
for(int x = 0;x<k;x++)
combinations.get(i).set(x, index[i]);
编辑:
此外,我不打算打印我想要将结果存储在二维数组中的结果
解决方法:
您正在寻找的是Backtracking.这种解决问题的技术主要基于递归.基本上,你设置你的第一个数字,然后只考虑其他数字作为子问题,并且当找到第一个数字集的每个排列时,第一个数字递增,等等.
您也可以使用直接的4 for循环解决问题,但解决方案不会扩展到除4个数字之外的任何其他内容.
您的解决方案将如下所示.它将输出4个数字的每个排列.
public class PermutationDemo {
public static void main(String[] args) {
int[] array = new int[4];
for (int i=0; i<array.length; i++) {
reset(array, i);
}
solve(array, 0);
}
private static void solve(int[] array, int i) {
if (i == array.length) {
print(array);
return;
}
for (int k=0; k<4; k++) {
solve(array, i+1);
makeMove(array, i);
}
reset(array, i);
}
private static void makeMove(int[] array, int i) {
array[i] += 1;
}
private static void reset(int[] array, int i) {
array[i] = 1;
}
private static void print(int[] array) {
for (int i=0; i<array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println("");
}
}
结果是:
PS [10:21] Desktop > java PermutationDemo
1 1 1
1 1 2
1 1 3
1 1 4
1 2 1
1 2 2
1 2 3
1 2 4
1 3 1
1 3 2
1 3 3
1 3 4
1 4 1
1 4 2
1 4 3
1 4 4
2 1 1
2 1 2
2 1 3
2 1 4
2 2 1
2 2 2
2 2 3
2 2 4
2 3 1
2 3 2
2 3 3
2 3 4
2 4 1
2 4 2
2 4 3
2 4 4
3 1 1
3 1 2
3 1 3
3 1 4
3 2 1
3 2 2
3 2 3
3 2 4
3 3 1
3 3 2
3 3 3
3 3 4
3 4 1
3 4 2
3 4 3
3 4 4
4 1 1
4 1 2
4 1 3
4 1 4
4 2 1
4 2 2
4 2 3
4 2 4
4 3 1
4 3 2
4 3 3
4 3 4
4 4 1
4 4 2
4 4 3
4 4 4
内容总结
以上是互联网集市为您收集整理的java – 二维arraylist的排列全部内容,希望文章能够帮你解决java – 二维arraylist的排列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。