728x90
반응형
https://www.acmicpc.net/problem/11052
dp[n]은 n개를 구입 할 때 최대 금액으로 정하고 n=1 은 p[1]로 초기화한다
그리고 n=2부터 dp[n] = dp[n-i] + dp[i] 의 점화식을 이용해 풀면 된다
#include <bits/stdc++.h>
using namespace std;
int n;
int p[1001], dp[1001];
int main(void) {
cin >> n ;
for(int i=1; i<=n; i++){
cin >> p[i];
}
dp[1] = p[1];
for(int i=2; i<=n; i++){
int maxnum = p[i];
for(int j=1; j<=i-1; j++){
maxnum = max(maxnum, dp[j] + dp[i-j]);
}
dp[i] = maxnum;
}
cout << dp[n] << endl;
return 0;
}
반응형
728x90
반응형
'알고리즘' 카테고리의 다른 글
[이코테/ DFS&BFS/ C++] 음료수 얼려 먹기 (0) | 2022.12.28 |
---|---|
[이코테/DFS&BFS/C++] DFS & BFS 기초 설명 및 예제 (0) | 2022.12.28 |
[백준/DP/C++] 11053번 가장 긴 증가하는 부분 수열 (0) | 2022.12.28 |
[백준/DP/C++] 9465번 스티커 (0) | 2022.12.27 |
[백준/DP/C++] 9461번 파도반 수열 (0) | 2022.12.26 |