2017-11-04 9 views
1

숫자 배열의 가능한 모든 순열을 가져와 ArrayList에 저장하려고 시도하지만 항상 배열 규칙의 모든 요소를 ​​기본 순차 정렬 {1 , 4, 9, 11} 어떤 도움을주십시오`숫자 배열의 모든 가능한 순열 배열 가져 오기

당신은 재귀 호출에 배열의 복사본을 전달해야
public static void main (String[] args) throws java.lang.Exception 
{  
    int [] my_numbers = {1,4,9,11}; 
    ArrayList<int []> permutation_results = new ArrayList<int []>(); 

    arrayPermutations(permutation_results,my_numbers,0); 
} 

public static void arrayPermutations(ArrayList<int []> result ,int[] 
numbers, int index){ 
    if(index >= numbers.length - 1){ 

     result.add(numbers); 

     return; 
    } 

    for(int i = index; i < numbers.length; i++){ 

     int t = numbers[index]; 
     numbers[index] = numbers[i]; 
     numbers[i] = t; 

     arrayPermutations(result, numbers, index+1); 

     t = numbers[index]; 
     numbers[index] = numbers[i]; 
     numbers[i] = t; 
    } 
} 
+0

참조로 전달하고 값으로 전달하십시오. –

답변

1

:

arrayPermutations(result, numbers.clone(), index + 1); 

그렇지 않으면 모든 호출이 동일한 int[] 인스턴스를 수정, 동일한 인스턴스가 다음과 같이 추가됩니다. 결과 목록을 여러 번.

+0

해결되었습니다. 매우 감사합니다. @ janos. – user7361314