228102026-01-15 19:21:21FintaTihamerJárda-L (40)cpp17Elfogadva 40/401ms376 KiB
#include <iostream>
#include <fstream>
using namespace std;
int a[2][28];
int main()
{   int n;
    cin>>n;
    int d[n+1],g[n+1];
    g[0]=0;
    g[1]=0;
    g[2]=1;
    d[0]=0;
    d[1]=1;
    d[2]=2;
    for(int i=3; i<=n; i++){
        d[i]=d[i-1]+d[i-2]+2*g[i-1];
        /* magyarul: a jelenlegi lepes leirhato ugy hogy feltetelemzem hogy az elso i-1 es i-2 le van fedve.
        Ha az elso i-1 van lefedve akkor csak 1 helyem maradt a 'vegeig', ezert csak egy allo I-t tudok rakni.
        Ha az elso i-2 van lefedva akkor 2 helyem van amit 2 fekvo i-vel tudok betolteni, alloval azert nem mert az allo I-kel az i-1 dolgozik.
        A g[i-1] pedig az feltetelezi hogy az elozo i-1-ben van egy lyuk ahova be tud ileszteni egy L alaku teglat, azert kell szorozni mert a vizszintes tengelyen szimmetrikus.*/
        g[i]=g[i-1]+d[i-2];
        /*magyarul: a i-1 feltetelezi hogy az elozo lepesnel egy L alaku teglat raktunk es azt be tudja fillelni.
        az i-2-nel azt feltetelezi hogy az utolso ket lepesben nem raktunk egy L alakut sem ezert rakhatunk egyet ezzel egy lyukat csinalva*/
    }
    cout<<d[n];
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms376 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva3/31ms324 KiB
14Elfogadva3/31ms316 KiB
15Elfogadva3/31ms316 KiB
16Elfogadva3/31ms316 KiB
17Elfogadva3/31ms316 KiB