Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution:
- def countWays(self, N, T):
- n=N//2
- A=[[-1]*(N+1) for i in range(N+1)]
- B=[[-1]*(N+1) for i in range(N+1)]
- def find(s,e):
- if e==s:
- return 1,0 if T[e] else 0,1
- if A[s][e]!=-1:
- return A[s][e],B[s][e]
- trues,falses=0,0
- for i in range(s+1,e+1,2):
- t1,f1=find(s,i-1)
- t2,f2=find(i+1,e)
- if T[i]=='&':
- trues+=t1*t2
- falses+=(f1*t2+t1*f2+f1*f2)
- elif T[i]=='|':
- trues+=(f1*t2+t1*f2+t1*t2)
- falses+=(f1*f2)
- else:
- falses+=(t1*t2+f1*f2)
- trues+=(f1*t2+t1*f2)
- A[s][e],B[s][e]=trues,falses
- return trues,falses
- return find(0,len(S)-1)[0]%1003
Advertisement
Add Comment
Please, Sign In to add comment