gpt4 book ai didi

Java 嵌套数组转递归方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:23:09 24 4
gpt4 key购买 nike

这是我的代码,用于查找数组中的所有组合有什么递归的方法可以增加编码的灵 active 吗?

这里的结果:132413421234124314321423312431423214324134123421213421432314234124132431413241234312432142134231

class Main {

// Find all combination from an array
public static void findAllConbinationFromArray(int ary[]){
for(int i = 0 ; i < ary.length ; i++){
for(int j = 0 ; j < ary.length ; j++){
for(int k = 0 ; k < ary.length ; k++){
for(int l = 0 ; l < ary.length ; l++){
if(check(i, j, k, l)){
System.out.print(ary[i] + "" + ary[j] + "" + ary[k] + "" + ary[l]);
System.out.println();
}
}
}
}
}
}

// Check and skip if it selects same value
public static boolean check(int ... elemt){

for(int i = 0 ; i < elemt.length ; i++){
int current = elemt[i];
for(int j = 0 ; j < elemt.length ; j ++){
if(i != j){
if(current == elemt[j])
return false;
}
}
}
return true;
}

public static void main(String[] args) {
int ary[] = {1, 3, 2, 4};
findAllConbinationFromArray(ary);
}
}

最佳答案

这是一种产生数组所有排列的递归方法。

public class Permute {

void swap(int[] arr, int x, int y) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}

void permute(int[] arr) {
permute(arr, 0, arr.length - 1);
}

//i - start index
//n - end index
void permute(int[] arr, int i, int n) {
int j;
if (i == n)
System.out.println(Arrays.toString(arr));
else {
for (j = i; j <= n; j++) {
swap(arr, i, j);
permute(arr, i + 1, n);
swap(arr, i, j); // swap back
}
}
}

public static void main(String[] args) {
int arr[] = { 1, 2, 3, 4 };
new Permute().permute(arr);
}

关于Java 嵌套数组转递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45904536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com