本人小白,今晚做题目遇到一个问题,然后思考了一下,感觉有个很好的方法可以跟大家分享一下~ (第一次写博客,哪里不对请指点哈)
例如:已知输出序列为abcd,经过输出受限的双端队列后能得到的输出序列是B
A.dacb B.cadb C.dbca D以上都不能输出
思路:1.我们是输出受限 而输入是不受限的 那么我们假设后端输出受限 如下图:
2.我们先让a入队(哪一端都可以)
3.a入队之后,其他四个元素依次入队(中间可以有元素出队)
所以其他元素的次序 分别可以是
4.首先分析A选项:输出dacb
d出队之后就是a出队,因为后端输出受限,只能是前端输出,前端输出d之后就是a,说明b和c是从后端入队的,所以可以看到c不可能是在ab之间的,所以排除。
这里如果是dabc就是对的。
5.再来分析B选项:输出cadb
首先输出c,可以得知d要么是后端入队了,要么是还没有从前端入队。如果是已经后端入队了,d不可能是在b的后面,所以是前端入队(c出队之前d还未入队),因此应该是输出ca之后从前端入队d,再从前端出队d,再从前端出队b,(b是从后端入队的,因为它在a的后面)。
5.最后分析C选项:输出dbca
同上 只可能出队dbac
ps:前端受限也是一样的,不影响结果。