반응형
//연속 합에서 가장 큰 수를 구할 때는 두 가지 경우로 나눌 수 있다
//1.자기 자신만 더했을 때 가장 큰 경우
//2.연속 된 두 수를 더했을 때 가장 큰 경우
//D[i] = i번째 수로 끝나는 가장 큰 연속 합
//K[] = 입력된 수
//D[i] = D[i-1] + K[i] 와 K[i]와 비교했을 때 가장 큰 것.
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 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, big = 0; cin >> n; vector <int> D(n); vector <int> K(n); for (int i = 0; i < n; i++) { cin >> K[i]; } for (int i = 0; i < n; i++) { D[i] = K[i]; if (i == 0) continue; if (K[i] < D[i - 1] + K[i]) { D[i] = D[i - 1] + K[i]; } } big = D[0]; for (int i = 1; i < n; i++) { if (big < D[i]) big = D[i]; } cout << big << '\n'; } | cs |
'Algorithm' 카테고리의 다른 글
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 9465번:스티커 답 (0) | 2017.01.27 |
---|---|
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 11053번:가장 긴 증가하는 부분 수열 답 (0) | 2017.01.27 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1699번:제곱수의 합 답 (0) | 2017.01.27 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 11052번:붕어빵 판매하기 답 (0) | 2017.01.27 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1463번:1로 만들기 답 (0) | 2017.01.25 |