문제점을 인터뷰하고 난 후 코드를 테스트 한 결과 잘못된 것으로 나타났습니다. 재귀에는 좋지 않습니다. 그러나 나는 그 문제를 이해할 수 없다.배열의 정수 순열 지정
질문은 : 배열 범위가 0 ~ 9이고 길이가 3 인 경우를 예로 들겠습니다. 주어진 길이의 주어진 배열로부터 정수의 모든 순열을 생성하십시오. 따라서 예 : 순열은 012,013,014, ..., 345,346 ... 이어야합니다. 아래 코드는 어디에 있습니까? (색인 또는 오프셋 부분이라고 생각합니다) 그리고 더 좋은 해결책이 있다면!
public void NumPermutation(int[] list, int offset, int[] temp, int index){
if(index == 4){
printarray(temp);
}
for(int count = offset; count < list.length; count++){
temp[index++] = list[count];
int te = list[offset];
list[offset] = list[count];
list[count] = te;
NumPermutation(list, offset, temp, index);
index -= 1;
}
}
public void test(int len){
int[] list = {0,1,2,3,4,5,6,7,8,9};
int[] temp = new int[4];
int index = 0, offset = 0;
NumPermutation(list, offset, temp,index);
}
문제는 각 시간을 증가시킬 수 오프셋 및 가도 끝 번호에 도달 할 수 있다는 것이다.
여기서'count' 선언은 어디에 있습니까? – chill