算法习题---栈与队列之栈的数学性质
一:栈的数学性质
当n个编号元素以某种顺序进栈,并且可以在任意时刻出栈,所获得的编号元素排列的数目N恰好满足Catalan函数的计算,即
二:题目一:
试着将1,2,3,4,5,6,六个数字入栈,则出栈方式有几种?使用数学性质可以知道有132种
三:其他题目:判断栈给定的操作序列的合法性
I入栈O出栈,例如ABC入栈,出栈为CBA,那么给定序列为IIIOOO,表示3个先入栈,然后出栈
现在给定一个序列(只含IO)要求判断其是否合法
四:性质
1.IO个数一致
2.开始到中间任一位置I的数目大于O数目
五:实现代码
int judge(char ch[]) { int inp, out; int i; inp = out = i = 0; while (ch[i] != '\0') { if (ch[i] == 'O') out++; else inp++; if (out > inp) return 0; i++; } if (inp != out) return 0; return 1; }