-
1823 백준 수확 - C++, DP쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 9. 16. 18:18반응형
#include <iostream> #include <algorithm> using namespace std; int n, res; int rice[2001]; int dp[2001][2001]; int DP(int left, int right, int count){ if(left > right) return 0; if(dp[left][right]) return dp[left][right]; return dp[left][right] = max(DP(left+1, right, count+1) + rice[left] * count, DP(left, right-1, count+1) + rice[right] * count); } int main(){ scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &rice[i]); cout << DP(1, n, 1) << '\n'; }
처음 문제를 봤을때 덱을 이용하는건가 했는데 몇번째 수확하는지에 따라 가중치가 있기 때문에 단순 덱으로는 풀 수 없었고 DP 배열을 따로 뽑아서 풀이한 문제.
int 안에 수들이 다 들어갔으며 dp 배열에는 [왼쪽 인덱스][오른쪽 인덱스]를 저장해서 풀이를 했다.
이 왜 골3?
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
1647 백준 - 도시 분할 계획, C++, 크루스칼 알고리즘 (0) 2021.09.17 11003 백준 최솟값 찾기 - C++, 덱 (0) 2021.09.16 백준 12738 가장 긴 증가하는 부분수열 3 - C++, LIS (0) 2021.08.23 백준 20040 사이클 게임 - C++, Disjoint Set (0) 2021.08.19 백준 1563 개근상 - C++, DP, 재귀 (0) 2021.08.11