Algorithm/Problem Solving
2020. 4. 19. 21:12
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
문제 링크
- https://www.acmicpc.net/problem/1912
사용 알고리즘
- DP
풀이
- d[i] = a[i]를 가장 마지막으로 하는 가장 큰 연속합
- d[i] = max(d[i - 1] + a[i], a[i])
소스 코드
- https://github.com/moomini/algorithm/blob/master/boj/1912.cpp
#include <cstdio>
int d[100003]; int a[100003];
int main(void) { int n; scanf("%d", &n); int ans = -100000003; for (int i = 1; i <= n; ++i) { scanf("%d", &a[i]); d[i] = (a[i] > (d[i - 1] + a[i])) ? a[i] : d[i - 1] + a[i]; if (ans < d[i]) ans = d[i]; } printf("%d\n", ans); return 0; } |
'Algorithm > Problem Solving' 카테고리의 다른 글
[BOJ/1699] 제곱수의 합 (0) | 2020.04.20 |
---|---|
[BOJ/2579] 계단 오르기 (0) | 2020.04.20 |
[BOJ/11054] 가장 긴 바이토닉 부분 수열 (0) | 2020.04.19 |
[BOJ/11722] 가장 긴 감소하는 부분 수열 (0) | 2020.04.18 |
[BOJ/11055] 가장 큰 증가 부분 수열 (0) | 2020.04.18 |