1. 백준 부분수열의합 1182
2. 컴퓨팅적 스킬
- 재귀호출 사용, 조합 사용
3. 컴퓨팅적 사고
-
next_permutation을 사용한 조합을 이용한 풀이 방법 1
순열과 조합중 조합을 사용하여 각각의 부분집합의 경우를 모두 구해준다. 하나씩 check변수에 모든 값을 true로 바꾸어준 후, 맨 앞에 있는 값들을 false로 바꾸면서 모든 부분집합의 경우를 구해준다. -
재귀함수 백트래킹을 이용한 풀이 방법 2
m == 0 일때 공집합
을 빼주어야한다. 양수라고 하였음. 정수에서 양수의 크기만 가지므로 공집합은 제외해야함- int cnt = 0;의 값이 계속초기화된다고 할 수 있지만, 결과값 반환할때는 그값이 더해진값만 반환된다.
- 경우의 수 의 문제임 따라서, 그값이 1로반환되어 한번의 경우의수 0번의 경우의수를 반환하여 더해가다보면 최종 경우의 수를 반환하게 된다.
- 정답일 경우는 sum == m이 같고, cnt ==값이 5개일때만 가능하다.
- 비정답일 경우는 sum == m이 아닌경우에 cnt==값이 5개 일경우는 불가능하다.
예를 들면, 도달했지만 값이 다를 수 있음 반례임
4. 풀이
재귀 백트래킹 풀이 1
1 |
|
재귀 백트래킹 풀이 2
1 |
|
next_permutation 조합 풀이
1 |
|