Блог пользователя Garvit_2013

Автор Garvit_2013, история, 3 года назад, По-английски

Can anybody tell me why my code is incorrect?

Thanks in advance.

Question link: https://practice.geeksforgeeks.org/problems/boolean-parenthesization5610/1

int solve(int i,int j, string &s,  vector<vector<vector<int>>> &v,bool flag)
{
 
    if(i==j)
    {
        if(flag)
        return s[i]=='T';
        else
         return s[i]=='F';
    }
    if(v[i][j][flag]==-1)
    {
        
        int ans=0;
        if(flag)
        {
            for(int k=i+1;k<j;k=k+2)
    {
        if(s[k]=='&')
        {
            ans+= solve(i,k-1,s,v,flag)*solve(k+1,j,s,v,flag);
        }
        else if(s[k]=='|')
        {
             ans+= solve(i,k-1,s,v,flag)*solve(k+1,j,s,v,!flag);
             ans+= solve(i,k-1,s,v,!flag)*solve(k+1,j,s,v,flag);
             ans+= solve(i,k-1,s,v,flag)*solve(k+1,j,s,v,flag);
        }
        else
        {
             ans+= solve(i,k-1,s,v,flag)*solve(k+1,j,s,v,!flag);
             ans+= solve(i,k-1,s,v,!flag)*solve(k+1,j,s,v,flag);
        }
       
    }
        }
        else
        {
            for(int k=i+1;k<j;k=k+2)
    {
        if(s[k]=='&')
        {
             ans+= solve(i,k-1,s,v,flag)*solve(k+1,j,s,v,flag);
             ans+= solve(i,k-1,s,v,flag)*solve(k+1,j,s,v,!flag);
             ans+= solve(i,k-1,s,v,!flag)*solve(k+1,j,s,v,flag);
        }
        else if(s[k]=='|')
        {
             ans+= solve(i,k-1,s,v,flag)*solve(k+1,j,s,v,flag);
        }
        else
        {
             ans+= solve(i,k-1,s,v,flag)*solve(k+1,j,s,v,flag);
             ans+= solve(i,k-1,s,v,!flag)*solve(k+1,j,s,v,!flag);
        }
       
    }
    }
     v[i][j][flag]=ans;
}
      return v[i][j][flag];
}

class Solution{
public:
    int countWays(int N, string S){
        // code here
        //cout<<S.size();
        vector<vector<vector<int>>> v(N,vector<vector<int>> (N,vector<int> (2,-1)));
        return solve(0,N-1,S,v,true);
    }
};
  • Проголосовать: нравится
  • -7
  • Проголосовать: не нравится

»
3 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Your Task: You do not need to read input or print anything. Your task is to complete the function countWays() which takes N and S as input parameters and returns number of possible ways modulo 1003.

I don't see in your code where are you taking modulo $$$1003$$$.