57532023-09-16 13:09:45AblablablaJárda-L (40)cpp17Elfogadva 40/403ms4356 KiB
#include <bits/stdc++.h>

using namespace std;

vector<vector<int>> dp;

int megold(int teljes, int fel){
    if(teljes < 0){
        return 0;
    } else if(teljes == 0 && fel == 0){
        return 1;
    }
    if(dp[teljes][fel] != -1){
        return dp[teljes][fel];
    }

    int vissza = 0;

    if(fel == 2){
        vissza += megold(teljes, 0);    // kettes fektetve
    } else if(fel == 1){
        vissza += megold(teljes - 1, 1);    // kettes fektetve
        vissza += megold(teljes - 1, 0);    // L
    } else if(fel == 0){
        vissza += megold(teljes - 2, 2);    // kettes fektetve
        vissza += megold(teljes - 1, 0);    // kettes allitva
        vissza += megold(teljes - 2, 1) * 2;    // L
    }

    //cout << teljes << " " << fel << " : " << vissza << "\n";
    return dp[teljes][fel] = vissza;
}

int main()
{
    int n;
    cin >> n;

    dp.assign(n + 1, vector<int>(3, -1));

    cout << megold(n, 0) << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/03ms1812 KiB
2Elfogadva0/03ms2056 KiB
3Elfogadva2/22ms2276 KiB
4Elfogadva2/22ms2436 KiB
5Elfogadva2/23ms2684 KiB
6Elfogadva2/22ms2776 KiB
7Elfogadva2/23ms2904 KiB
8Elfogadva3/33ms3120 KiB
9Elfogadva3/32ms3236 KiB
10Elfogadva3/32ms3320 KiB
11Elfogadva3/32ms3444 KiB
12Elfogadva3/32ms3680 KiB
13Elfogadva3/33ms3804 KiB
14Elfogadva3/33ms3996 KiB
15Elfogadva3/33ms4136 KiB
16Elfogadva3/33ms4232 KiB
17Elfogadva3/33ms4356 KiB