: 해를 찾는 도중 막힌 경우(답이 없거나, 말단노드 인 경우) 되돌아가서 다시 해를 찾는 기법
👉 지금 경로가 정답일 가능성이 없다면 해당 경로를 가지 않고 되돌아 감(가지치기)
- 가지치기를 통해 연산양이 줄어든다.
필요 - 값 저장 배열, 방문 체크 배열
ex) A,B,C -> 2개 선택
참고 코드
//종료
static void permutation(int r){
if(r == R) // R : r개 전부 뽑은 경우)
return
}
//분기
for(int i =0; i<arr.length; i++){
if(isVisited[] == true) continue;
select[r] = i;
isVisited[i] = true;
permutation(r+1);
isVisited[i] = false; //중복허용X 마킹해제 (방문한 노드 재방문X)
}
static void combination(int start, int r){
if(r >= R){
for(int i=0; i<R; i++){
System.out.print(arr[select[i]]);
}
cnt++;
System.out.println();
return;
}
for(int i=start; i<arr.length; i++){
select[r] = i;
combination(i+1, r+1);
}
}