Baekjoon/DP

[백준 2579] 계단 오르기 (DP) (C/C++)

워니- 2020. 1. 18. 15:00
#include <iostream>
#include <algorithm>
using namespace std;
 
int N;
int arr[310];
int dp[310][3];
 
int solve(int cnt, int chain)
{
    if(cnt < 1 || chain == 3)
    {
        return 0;
    }
    else if(cnt == 1)
    {
        return arr[cnt];
    }
    
    if(dp[cnt][chain] != 0)
    {
        return dp[cnt][chain];
    }
    
    dp[cnt][chain] = max(solve(cnt-1, chain+1+ arr[cnt], solve(cnt-21+ arr[cnt]);     
    
    return dp[cnt][chain];
}
 
int main(void)
{
//    freopen("B2579_input.txt", "r", stdin);
    
    cin >> N;
    
    for(int i = 1; i <= N; i++)
    {
        cin >> arr[i];
    }
    
    cout << solve(N, 1<< endl;
    
    return 0;
}
cs