Loj#3005-「JOISC 2015 Day 4」Limited Memory【交互题】
1|0正题
1|1题目大意
有一个长度为的括号串,其中包括[]和<>两种括号类型,一个合法的括号串要求同类型的括号一一对应。
你每次可以询问中的一个字符并且传递一个的数字到下一次。
你的程序每次只知道字符串长度和上一次传递过来的数字(最开始时是),你需要在次内得到这个字符串是否为一个合法括号串。
1|2解题思路
很有趣的题目。
我们需要知道的信息只有这个括号串是否合法,考虑怎么把什么信息编码进内。
考虑这样一个算法流程,我们先找到一个 '[' 或者 '<',然后开始往后找它对应的那个括号。
此时一个合法括号串有两种可能,
- 下一个是和它对应的括号,此时这个部分的匹配就结束了。
- 下一个也是 '[' 或者 '<' ,此时我们需要去匹配这个新的左括号之后,知道它右括号的位置,在继续从这个位置去匹配前面那个左括号。
也就是考虑当一个匹配结束的时候,假设位置为,考虑怎么返回到前一个还未匹配的左括号那里。显然这一段括号序列都合法了,也就是括号类型也一一对应了,那么我们直接往前跑,遇到一个左括号就,一个右括号就,那第一个和为的位置就是我们需要的位置,同时我们还需要带一个位置的信息回去。
那么现在我们需要储存的信息就是当前的位置,带回去的位置信息,当前的和,还有目前的状态。
状态分种
- 寻找新的左括号中
- 往回走找之前的左括号中
- 匹配左括号 [ 中
- 匹配左括号 < 中
这样的状态数就是,可以通过本题。
1|3code
__EOF__

本文作者:QuantAsk
本文链接:https://www.cnblogs.com/QuantAsk/p/16377841.html
关于博主:退役OIer,GD划水选手
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/QuantAsk/p/16377841.html
关于博主:退役OIer,GD划水选手
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
分类:
劲爆交互
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?