不可能的出栈顺序

有一道题目:一个栈的输入顺序是ABCDEF,那么不可能出现的出栈顺序是什么()

A、DCBAEF

B、ACBEDF

C、DEFBCA

D、CDBAFE

这道题的答案是C。

类似的题如果只是ABC三个字母,我们还可以列举一下所有的可能,可是如果字母多了,像是这道题一样,我们把所有的可能都列出来,成本就太高了。所以我们要从中找到规律。

首先我们看一下A选项,第一个出栈的是D,那么就说明ABC按顺序的排在栈中,,那么ABC的出栈顺序一定是CBA这样的,中间有可能夹杂着EF,比如说CEFBA、CEBAF等等,但是不可能出现CA...、BC...,因为ABC的相对顺序顺序早在D出栈的时候就一定排列好了。

我们来分析一下C选项,首先出栈的是D,接着是EF,但是接下来出现的BCA就是错误的,因为当D出栈的时候,就一定决定了ABC相对的的出栈顺序(CBA),所以不可能出现BCA的情况。

那么咱们通用的结论是什么呢?

我们可以把出栈的顺序分成一步一步来看,如果一个元素之前的元素还没有出栈,而这个元素先出栈,那么他之前的元素一定是按照相对顺序出栈的。

猜你喜欢

转载自blog.csdn.net/Zoooozz/article/details/80036919