#include <iostream> #include <algorithm> using namespace std; int N; long long card[1010]; long long dp[1010]; long long solve(int cnt) { if(dp[cnt] != 0) { return dp[cnt]; } for(int i = 1; i <= N; i++) { if(cnt+i <= N) { dp[cnt] = max(dp[cnt], solve(cnt+i) + card[i]); } } return dp[cnt]; } int main(void) { // freopen("B11052_input.txt", "r", stdin); cin >> N; for(int i = 1; i <= N; i++) { cin >> card[i]; } cout << solve(0); return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 2294] 동전 2 (DP) (C/C++) (★★) (0) | 2020.03.07 |
---|---|
[백준 2293] 동전 1 (DP) (C/C++) (★★) (0) | 2020.03.07 |
[백준 2011] 암호코드 (DP) (C/C++) (★) (0) | 2020.01.22 |
[백준 9461] 파도반 수열(DP) (C/C++) (0) | 2020.01.22 |
[백준 2225] 합분해 (DP) (C/C++) (0) | 2020.01.22 |