卡特兰-HDU1515-HDU2067

该博客讨论了如何使用栈操作来解决编程问题,特别是字符串匹配和卡特兰数的应用。通过具体的例子解释了如何判断一个栈的出栈序列是否可能,以及如何计算从一个字符串转换到其字谜的不同方法。还提到了卡特兰数在解决棋盘路径问题中的应用,给出了计算特定路径数量的公式和相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:一个栈的入栈序列是A、B、C、D、E,则栈的不可能的输出序列()

A、EDCBA       B、DECBA     C、DCEAB     D、ABCDE

题目从手工操作方面比较容易理解,需要借用一个辅助栈,先理一遍思路:

先看B答案:

(0)实始态

入栈序列是ABCDE

               i

出栈序列是CDBEA

               j

栈:|-

一开始有i,j两个下标指向入栈序和出栈序,我们需要C最先出栈,那么就应该让C处于当前栈顶的位置。

因此,需要将ABC入栈

(1)第一步

 

入栈序列是ABCDE

                      i

出栈序列是CDBEA

               j

栈:|-ABC

栈顶为C,出栈序列的j位置为C,刚好可以匹配,因此j后移一位,从栈中弹出栈顶元素

 

(2)第二步

 

入栈序列是ABCDE

                      i

出栈序列是CDBEA

                  j

 

栈:|-AB

栈顶为B,出栈序列的j位置D,并不匹配,那么需要想办法使得栈顶元素为D.这时可以使入栈序列的i位置的字符继续进栈,期望使得栈顶元素为D。

 

(3)第三步

 

入栈序列是ABCDE

                        i

出栈序列是CDBEA

                  j

 

栈:|-ABD

栈顶为D,出栈序列的j位置为D,刚好可以匹配,因此j后移一位,从栈中弹出栈顶元素.

 

 

 

(4)第四步

 

入栈序列是ABCDE

                        i

出栈序列是CDBEA

                    j

 

栈:|-AB

栈顶为B,而出栈序列读头j下也是B,可以匹配,因此j后移一位,从栈中弹出栈顶元素。

 

(4)第四步

 

入栈序列是ABCDE

                        i

出栈序列是CDBEA

                      j

 

栈:|-A

栈顶为A,而出栈序列读头j下是E,不匹配,入栈序列的i位置的字符继续进栈。

(4)第五步

 

入栈序列是ABCDE

                          i

出栈序列是CDBEA

                      j

 

栈:|-AE

栈顶为E,而出栈序列读头j下也是E,可以匹配,因此j后移一位,从栈中弹出栈顶元素。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Raise

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值