[2302] 극장 좌석
BOJ/DP2018. 2. 5. 17:47
d[n] : VIP 회원들의 좌석 번호들이 주어졌을 때, 사람들이 좌석에 앉는 서로 다른 방법의 가짓수
- 소스코드
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 | #include <stdio.h> int vip[41], d[41]; int go(int k) { int ret; if(k == 0 || k == 1) return 1; if(d[k]) return d[k]; if(vip[k]) return d[k] = go(k-1); ret = go(k-1); if(!vip[k-1]) ret += go(k-2); return d[k] = ret; } int main() { int n, m, k; scanf("%d%d", &n, &m); while(m--) { scanf("%d", &k); vip[k] = 1; } printf("%d\n", go(n)); return 0; } | cs |
>> n이 n번에 앉았을 때의 경우의 수 : d[n-1]
>> n이 n-1에 앉았을 때의 경우의 수 : d[n-2]
>> 여기서는 10번 라인을 쓰지 않으면, n-1번이 vip석이 아닌경우 n번이 vip석이여도 n-1과 n번이
바꿔 앉는 경우를 세어 중복이 발생한다.
'BOJ > DP' 카테고리의 다른 글
[11048] 이동하기 (0) | 2018.02.18 |
---|---|
[9184] 신나는 함수 실행 (0) | 2018.02.16 |
[1937] 욕심쟁이 판다 (0) | 2018.02.01 |
[1309] 동물원 (0) | 2018.02.01 |
[1932] 숫자삼각형 (0) | 2018.02.01 |