![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
栈、队列
ITCharge
高效率编程,慢节奏生活。
展开
-
HDU1274 展开字符串【栈】
题目大意:为了表示纺织CAD系统的纱线排列问题。用小写字母来表示不同的纱线,连接在一起表示纱线的组合。前边加数字表示重复多少次。比如2(abc),a、b、c表示不同的纱线,abc表示纱线组合,2+()表示abc重复两次,即abcabc。如果前边没有数字,则默认为1。现在给你一个这样的字符串,请将表达式展开输出排列结果。思路:使用栈操作,将字符串展开。重点在于去括号。1)如果遇到数字或是左括号,直接入栈。2)如果遇到字母,分两种情况: 栈顶元素为数字num,则将字母压入占中num次。 栈原创 2015-04-14 17:55:36 · 1429 阅读 · 1 评论 -
POJ1363 Rails【stack】【栈】
题目大意:如上图所示,已知火车要从A入站,然后从C出站。火车进站的顺序为1~N,现在给你出站的顺序。问:能不能通过站台改变火车出站顺序来实现按所给顺序出站。思路:把站台看做是一个栈,按1~N的顺序遍历火车原先顺序,先入栈,如果栈顶的火车编号和所给出站顺序将要出站的编号一样。那么火车就出栈,直到栈里边所有满足出站顺序的火车都出站,否则就一直入栈。最后判断所有火车是否都出站了。若都出站,输出Yes,否则输出No。原创 2014-12-09 18:58:08 · 3208 阅读 · 0 评论 -
HDU3351_Seinfeld【栈】
题目大意:一串由'{'和'}'组成的字符串,'{'和'}'可以互相转换,括号匹配的时候为稳定状态。输入一个字符串,问最少经过几次变换能达到稳定状态。思路:先建立一个栈,让每个字符逐个进栈,若相邻的两个字符为"{}"(即相邻括号匹配),则两个字符同时出栈。最终栈里边留下括号不匹配的项。通过观察可知:最终留在栈里的肯定为以下情况“}}}}…{{{{{…",即左边全为'}',右边全为'{'。那么最少要转换多少次呢。由题意可知,括号总数为偶数分别计算'}'的个数sum1,'{'的个数sum2。若'}原创 2014-10-20 09:45:24 · 1140 阅读 · 0 评论 -
NYOJ35 表达式求值【栈】
题目大意:给你一个计算表达式,求出最终结果。思路:用两个栈来分别存数和操作符, 遇到'(',操作符入栈,遇到')',计算括号内的式子。遇到'+'、'-'、'*'、'/'就比较当前运算符与栈中运算符的优先级,大于等于于栈中优先级就计算,否则就入栈,留待下次计算。最后计算栈中剩下优先级低的相应式子原创 2014-12-13 12:10:51 · 1077 阅读 · 0 评论 -
HDU1285 确定比赛名次【拓扑排序】【优先队列】
思路:因为要满足字典序的拓扑排序,所以用了STL中的优先队列。priority_queue<int,vector<int>, greater<int> > Q;实现了权值小的优先级高,取出的时候保证序号是队列中最小的。其他的和一般的拓扑排序无区别。原创 2014-12-22 22:22:36 · 1116 阅读 · 0 评论 -
NYOJ93 汉诺塔(三)【栈】
题目大意:上边说的很明白了。思路:就是用三个栈进行模拟过程并判断就可以。原创 2014-12-13 14:45:30 · 1040 阅读 · 0 评论 -
UVA442 Matrix Chain Multiplication【stack】【栈】
题目大意:给你N个矩阵的规模,再给你矩阵链乘的表达书,输出乘法的次数。思路:利用栈来解表达式,遇到字母时,矩阵入栈,遇到右括号')'出栈并计算结果,再将结果入栈。原创 2014-12-11 09:02:25 · 1016 阅读 · 0 评论 -
POJ1879 Tempus et mobilius Time and motion【置换群】
题目大意:有三条轨道,一个球库。球库有编号1~N的小球,按顺序排列。三条轨道分别是1 分钟单位的轨道,容量为 4;5 分钟单位的轨道,容量为 11;60 分钟的轨道,容量为 11。轨道可视为栈(先进后出)。每过 1 分钟,一个小球从球库中出来,球库可视为一个队列(先进先出)。小球先进入1 分钟轨道。如果 1 分钟轨道中已经有了 4 个,则这四个小球依次进入球库,而这个球进入 5 分钟轨道。如果 5 分钟轨道已经有了 11 个,则这 11 个球依次进入球库,而这个球进入 60 分钟轨道原创 2015-09-06 11:30:19 · 513 阅读 · 0 评论