先说一下题目:
假设有一个栈S,每次我们可以把序列A(含N个元素)中的第一个元素移入栈S,也可以是从栈顶弹出一个元素放入出栈序列B。这
样,经过N次入栈和出栈操作后,我们可以得到一个出栈序列B。
现在,你的任务是对给定的一段序列B,,判断序列B是不是序列A的出栈序列。
输入描述:
第一行输入两个正整数N(N<10)、M(0<M<=1000),分别表示序列A的长度和序列B的数目。
第二行,输入N个正整数,以空格分开,为序列A。
接下来的M行,每行输入N个正整数,为要判断的出栈序列B。
输出描述:
M行,如果对应的序列B是序列A的出栈序列则输出“YES”,否则输出"NO”。
输入样例:
3 6
123
132
213
231
312
321
123
输出样例:
YES
YES
YES
NO
YES
YES
首先,我们就判断入栈顺序是逆序数为0的情况(1,2,3,……,n)。既然是判断出栈顺序,那么就会使用栈。我们可以使用for循环,在入栈的时候进行判断如果和出栈的数字相同,则入栈的数字就出栈,判断出栈的数字往后移动一位。
代码如下: