练习专区

今天的一小步就是明天的一大步
Problem 1708 操作是否合法
Accepted: 3   Total Submit: 8
Time Limit: 1000ms   Memory Limit: 30720KB
Description
栈是一种操作受限的线性表,其入栈(插入元素)和出栈(删除元素)的操作均限定在线性表的同一端进行。入栈和出栈操作的顺利进行均有限制条件,入栈时要求线性表不满,出栈时要求线性表非空。限制规定:在线性表为空时进行的出栈操作为非法操作,在线性表为满时进行的入栈操作也为非法操作。 假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,可以操作且终态为空的序列称为合法序列,不能操作或终态非空的序列称为非法序列。例如:IOIO是合法序列,IOOI是非法序列,因为IOOI序列中第2个出栈操作(O)时栈为空;IIIO也是非法序列,因为操作结束时栈非空。 现在请你编程判断下列给的的操作序列是合法序列还是非法序列,若为非法序列则输出“非法序列”,否则输出“合法序列”。
Input
输入有多组,每组数据第一行为一个正整数N,表示接下来有N个操作序列需要判断。随后是N行由I和O组成的字符数据,每行表示一个操作序列。
Output
输出每个序列的判断结果,合法则输出“合法序列”,否则输出“非法序列”。不同组序列间用一横线分割,该横线由12个半角的“-”字符组成。
Sample Input
2
IIOO
IOII
3
IOOIOIIO
IIIOIOIO
IIIOOIOO
Sample Output
合法序列
非法序列
------------
非法序列
非法序列
合法序列
------------
Hint
提交     返回