这个栈最小应该多大?

nastik 2015-12-20 01:02:29
若元素a,b,c,d,e,f依次进栈,允许进栈推展交替进行,但不允许连续3次进行退栈工作。问: 能否得到出栈序列d,b,c,a,e,f?
答案是可以。

我觉得不可能啊,因为
a,b,c,d
pop d
a,b,c
怎么可能第二个出栈的是b呢?
...全文
212 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2015-12-26
  • 打赏
  • 举报
回复
第一个序列为初始序列 a,b,c,d,e,f 下面进行第一轮入栈出栈操作 操作 栈状态 出栈序列 开始 栈空 a 入栈 栈内 a b 入栈 栈内 b,a c入栈 栈内 c,b,a c 出栈 栈内 b,a c d入栈 栈内 d,b,a c d出栈 栈内 b,a c,d b出栈 栈内 a c,d,b e入栈 栈内 e,a c,d,b e出栈 栈内 a c,d,b,e a出栈 栈内 a c,d,b,e,a f入栈 栈内 f f出栈 栈空 c,d,b,e,a,f 结束第一轮入栈出栈 于是生成第二个序列: c,d,b,e,a,f, 再次 入栈出栈 就可以生成第三个序列了 d,b,c,a,e,f 操作终止
nastik 2015-12-25
  • 打赏
  • 举报
回复
引用 6 楼 lm_whales 的回复:
你说的"第一轮全部出栈后,得到第二个序列c,d,b,e,a,f,"是什么含义? 没有看懂。
lm_whales 2015-12-22
  • 打赏
  • 举报
回复
1楼告诉你,如果仅仅是一次入栈出栈,那是不可能的 但是我们可以多来几次,谁说 栈只能用一次啊 又不是一次性输液管 题目的意思是入栈次序不可变,但是出栈只是可以出入交替,可以连续两次出栈。 原始序列是a,b,c,d,e,f 第一轮全部出栈后,得到第二个序列c,d,b,e,a,f, 可以第二轮入栈出栈,此时可以得到第三个序列d,b,c,a,e,f 实际上只进行了两轮,第三轮还没开始呢
lm_whales 2015-12-21
  • 打赏
  • 举报
回复
做一个栈 测试一下就可以了 枚举所有可能性吧 1楼的方法应该是可行的,因为不允许3次出栈,但允许两次连续出栈。
fly_dragon_fly 2015-12-21
  • 打赏
  • 举报
回复
我也觉得不可能, d后面要么是c,要么是e
nastik 2015-12-21
  • 打赏
  • 举报
回复
引用 4 楼 lm_whales 的回复:
做一个栈 测试一下就可以了 枚举所有可能性吧 1楼的方法应该是可行的,因为不允许3次出栈,但允许两次连续出栈。
是啊,我也觉得d后面要么是c要么是e 怎么可能是b呢? 没有看懂1L的解
nastik 2015-12-20
  • 打赏
  • 举报
回复
谢谢,你说的第一轮,第二轮,等等,是什么含义呢,不太懂。 从第一轮如何得到第二轮的c,d,b,e,a,f? 谢谢。
linzertling 2015-12-20
  • 打赏
  • 举报
回复
可以啊,总共执行三轮即可,第一轮是a,b,c,d,e,f,第二轮是c,d,b,e,a,f,第三轮即可到达d,b,c,a,e,f,并且满足题中所给条件

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧