设 a 和 b 为两个长度分别为 n,m 的序列,我们可以递归的定义一个长度为 n+m 的序列 merge(a,b),策略如下:
-
如果两个序列中某个序列为空,那么结果就是另一个序列。也就是 merge(∅,b)=b,merge(a,∅)=a。特别的,merge(∅,∅)=∅。
-
如果两个序列都非空,而且 a1<b1,那么 merge(a,b)=[a1]+merge([a2,⋯,an],b)。
-
如果两个序列都非空,而且 a1>b1,那么 merge(a,b)=[b1]+merge(a,[b2,⋯,bn])。
-
如果两个序列都非空,而且 a1=b1,那么 merge(a,b) 既可以是 [a1]+merge([a2,⋯,an],b) 也可以是 [b1]+merge(a,[b2,⋯,bn])。
给出一个长度为 2n 的序列 t ,求问是否存在两个长度为 n 的排列 p,q,使得 merge(p,q) 有可能为 t。