我有一个数字N和字符串S.我必须创建一个大小为N的数组,其中包含从0到N-1的数字排列,从0到N-1索引,这样0到N-2,if:< / p>
S[i]=='1' then A[i]>A[i+1]
else A[i]<A[i+1]
我必须找到创建此数组的方法的数量。
问题:我知道这可以通过动态编程解决,但主要问题是,如何跟踪已使用的数字。
如果N在1到25之间,那么I can use dp[1<<n][n]
。 Mask
告诉我使用的号码,当N达到3000时,如何解决这个问题。
如何跟踪序列中使用的数字,因为每个数字只能使用一次?
For Ex:
3
S =11
Ans = 1
The only permutation that satisfies the given pattern is (2,1,0).