A simple dp approach


#1

`int Solution::solve(int A)
{
int md=1000000007;
vector<vector> v={{1,2},{2},{0,1,3,4},{0,4},{1,3}};
long long int dp[5][A];

for(int i=0;i<5;i++)
{
    for(int j=0;j<A;j++)
    {
        if(j==0)
        dp[i][j]=1;
        else
        dp[i][j]=0;
    }
}

for(int i=1;i<A;i++)
    {
        for(int j=0;j<5;j++)
        {
            vector<int> tmp=v[j];
            
            for(int k=0;k<tmp.size();k++)
            {
                dp[j][i]+=(dp[tmp[k]][i-1]%md);
            }
        }
    }

long long int ans=0;
for(int i=0;i<5;i++)
{
    ans+=(dp[i][A-1]%md);
}
ans=(ans%md);
return ans;

}
`