티스토리 뷰
728x90
반응형
중복 조합은 조합과 비슷하게 n개의 요소 중 r개를 순서에 상관없이 뽑는데,
중복을 허용하여 뽑는 경우의 수이다.
유도 과정은 생략하고, 실제로 어떻게 동작하는지는 아래 그림을 보면 쉽다.
5개의 요소 중 중복 조합으로 2개를 뽑는 경우의 수를 나타내고 있다.
중복 순열을 구현할 때와 비슷하게 isVisited 배열을 제거하고,
재귀 함수를 호출할 때 i + 1이 아닌 i부터 대입해 중복을 허용하면 된다.
public class CombinationWithRepetition {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5}; // 중복 조합을 만들 배열
int n = arr.length;
int r = 2;
comb(arr, new int[r], 0, 0, n, r); // n개중 r개를 중복 조합으로 뽑는 경우 출력
}
static void comb(int[] arr, int[] output, int start, int depth, int n, int r) {
if(depth == r) {
for(int i = 0; i < output.length; i++) {
System.out.print(output[i]);
}
System.out.println();
return;
}
for(int i = start; i < n; i++) {
// 재귀함수 호출
output[depth] = arr[i];
comb(arr, output, i, depth + 1, n, r); // i + 1이 아닌 i 대입, r - 1이 아닌 r 대입
}
}
}
// 출력 결과
11
12
13
14
15
22
23
24
25
33
34
35
44
45
55
위 그림과 같은 결과를 얻는 것을 알 수 있다.
반응형
'Algorithm > DFS' 카테고리의 다른 글
[Java+Python]15651번, N과 M(3), 중복순열 (0) | 2023.05.02 |
---|---|
[Java+Python]15650번, N과 M(2), 조합 (0) | 2023.04.28 |
[Java+Python]15649번, N과 M(1), 순열 (0) | 2023.04.27 |
[Java]중복 순열(Permutation with repetition), 가위 바위 보 문제 (0) | 2022.08.01 |
[Java]순열(Permutation)과 조합(Combination) (2) | 2022.07.31 |
[Java]BFS / DFS (0) | 2022.07.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 유럽
- 백준
- 세모
- Backjoon
- 여행
- 지지
- 칼이사
- 파이썬
- 스트림
- 리스트
- BOJ
- 맛집
- 야경
- 남미
- a6000
- 알고리즘
- 세계일주
- 면접 준비
- 스프링
- java
- 중남미
- 기술면접
- 자바
- 유럽여행
- spring
- 세계여행
- Python
- RX100M5
- 동적계획법
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함