문제
풀이방법
dp[i]=max(dp[i-1]+arr[i],arr[i])
주의할점
배열 초기화 및 배열 넉넉히 세팅
음수가 배열에 들어가니 기준값 잘 설정하기
코드
// bj1912.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다.
//
#include "stdafx.h"
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
long arr[100001] = {0,};
long dp[100001] = {0,};
int input;
long maxval=0;
cin >> input;
int i, j, k;
for (i = 0; i < input; i++)
cin >> arr[i];
dp[0] = arr[0];
for (i = 1; i < input; i++) {
dp[i] = max(dp[i - 1] + arr[i], arr[i]);
}
maxval = dp[0];
for (i = 0; i < input; i++) {
if (maxval < dp[i])
maxval = dp[i];
}
cout << maxval;
return 0;
}
'알고리즘 > 다이나믹프로그래밍' 카테고리의 다른 글
백준 2225 합분해 (0) | 2019.02.06 |
---|---|
백준1699 제곱수의 합 (0) | 2019.02.03 |
백준11053번 가장 긴 증가하는 부분 수열 (0) | 2019.01.31 |
백준11057 오르막 수 (0) | 2019.01.30 |
백준1563 개근상 (0) | 2019.01.30 |