AUTOMATA - GAME2 - SPOJ Solution C++

  Problem Link : AUTOMATA 


👉 Hint : Simple 2D DP

 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;
bool dp[1000][1000];
int main()
{
    int t;
    cin>>t;
    string l,s;
    while(t--)
    {
        memset(dp,0,sizeof(dp));
        cin>>l;
        cin>>s;
        l.insert(0,"0");
        s.insert(0,"0");
        int s1=l.size();
        int s2=s.size();
        dp[0][0]=1;
        for(int i=1;i<s1;i++)
        {
            for(int j=1;j<s2;j++)
            {
                if(l[i]==s[j])
                    dp[i][j]=dp[i-1][j-1];
                else if(l[i]=='?')
                    dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]);
                else if(l[i]=='*')
                {
                    for(int k=j;k>=1;k--)
                        dp[i][j]=max(dp[i][j],dp[i-1][k]);
                }
            }
        }
        if(dp[s1-1][s2-1])
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
} 

 

Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook. 

😇Happy Learning!!