Algorithm/📖Baekjoon
#11052 카드 구매하기
yewoneeee
2022. 6. 26. 17:40
# 문제
# 입력 및 출력
# 풀이
dp[n] = max(dp[0]+dp[n], dp[1]+dp[n-1], dp[2]+dp[n-2], ... , dp[n-1]+dp[1])
중복되는 값은 있지만 간단한 반복문으로 구현하기 위해 그냥 위의 식으로 풀었음
#include <iostream>
#include <algorithm>
using namespace std;
int dp[1001];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> dp[i];
}
for (int i = 1; i <= n; i++) {
int maxv = dp[i];
for (int j = 1; j < i; j++) {
maxv = max(maxv, dp[j] + dp[i - j]);
}
dp[i] = maxv;
}
cout << dp[n];
}