Iam_Sandeep

No of Ways of Boolean Paranthesis DP

Apr 23rd, 2022
1,460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.89 KB | None | 0 0
  1.  
  2. class Solution:
  3.     def countWays(self, N, T):
  4.         n=N//2
  5.         A=[[-1]*(N+1) for i in range(N+1)]
  6.         B=[[-1]*(N+1) for i in range(N+1)]
  7.         def find(s,e):
  8.             if e==s:
  9.                 return 1,0 if T[e] else 0,1
  10.             if A[s][e]!=-1:
  11.                 return A[s][e],B[s][e]
  12.             trues,falses=0,0
  13.             for i in range(s+1,e+1,2):
  14.                 t1,f1=find(s,i-1)
  15.                 t2,f2=find(i+1,e)
  16.                 if T[i]=='&':
  17.                     trues+=t1*t2
  18.                     falses+=(f1*t2+t1*f2+f1*f2)
  19.                 elif T[i]=='|':
  20.                     trues+=(f1*t2+t1*f2+t1*t2)
  21.                     falses+=(f1*f2)
  22.                 else:
  23.                     falses+=(t1*t2+f1*f2)
  24.                     trues+=(f1*t2+t1*f2)
  25.             A[s][e],B[s][e]=trues,falses
  26.             return trues,falses
  27.         return find(0,len(S)-1)[0]%1003
Advertisement
Add Comment
Please, Sign In to add comment