今天只完成了一道题,学习了出栈序列的合法性,也因为这个卡了一个晚上。

写的题是第二周任务(栈+队列+搜索模板)中的c题:

您将获得一个由括号( )[ ]组成的字符串。这种类型的字符串被认为是正确的:

  • 如果是空字符串
  • 如果AB是正确的,AB是正确的,
  • 如果A是正确的,(A) 和 [A] 是正确的。

编写一个程序,该程序采用此类型的字符串序列并检查其正确性。您的程序可以假定最大字符串长度为128

思路:

将左括号输入,将右括号用于消除。按照栈的定义,左括号可以与右括号对应。

#include<iostream>
#include<string.h>
#include<stack>
using namespace std;
const  int max_n = 1e5 + 10;  char Q[max_n];
int top = 0;                       void push (char x){//入栈Q[top ++] = x;
}char pop(){//出栈return Q[--top];
}
void pop1(){//退顶--top;
}int main()
{int n ;scanf("%d" , &n);char s[130];int a[1001];char o;for( int m = 0 ; m < 1001 ; m ++){a[m] = 0;}int m ;stack<char>v;for( m = 0 ; m <= n ; m ++){gets(s);int u = strlen(s);if(u == 0){a[m] = 1; continue;}//根据题意若无输入直接Yesint t ;for( t = 0 ; t < u ; t ++){if( s[t] == '(' || s[t] == '[' ){//如果输入是左括号将括号存入push( s[t] );}else if(top == 0){break;}else if(top!=0){if(s[t] == ')') o = '(';//若输入为右括号,将右括号变为左括号,用于消去栈中的括号if(s[t] == ']') o = '[';if(pop() == o){continue;}else break;}}if( t == u && top == 0)a[m] = 1;else a[m] = 0;while(top!=0){//将栈顶退回pop1();}}for( m = 1 ; m <= n ; m ++){if(a[m] == 1)printf("Yes\n");else printf("No\n");}return 0;
}

出栈的合法性:

因为栈的限制“后进先出”,所以栈的输出有限制,但是可以通过入栈出栈的顺序改变输出结果。不过还是有限制。

例题

现在有n个元素分别是1,2,3,...,n,我们想知道通过一个栈,在n次push/pop后,出栈序列可能是什么样的。例如n是5,那么入栈次序就是1,2,3,4,5,如果我们希望出栈次序同样是1,2,3,4,5,那只要每push一个数,就立即pop一个数。如果我们希望出栈次序是3,2,4,5,1,那么我们先让1,2,3入栈,然后pop出来3和2,接着4入栈后马上pop,再就是5入栈后马上pop,最后再把栈里的1pop出。再例如,如果我们希望出栈次序是5,4,1,2,3,这是办不到的,如果要让5最先出栈,那么出栈次序只可能是5,4,3,2,1

思路:

用另一个栈来存数,将待测序列依次与i(1~N)比对,若相同继续对比,若不同则将i存入新栈,直至序列有数与相等。然后继续将序列与i对比若不同则与新栈出栈的数对比,若相同则继续,如不同则合法。

题解还在写,因为没有看清题意,正在加班赶。后续补上。

了解了一下c++里面的stack,用这个可以不用自己写入栈,出栈了。很方便,但是需要了解栈的底层代码,初学时还是需要自己写,多了解一些。

每日总结-----12月15日相关推荐

  1. 第五服务器维护时间2020,《黑潮之上》2020年12月15日全服务器停服维护公告

    在黑潮之上手游中2020年12月15日全服务器停服维护了哪些有趣的内容呢?不清楚本次更新情况如何的话,下面就来看一下吧! 各位接触者: 为了提供良好的游戏体验,保证服务器稳定运行,<黑潮之 上& ...

  2. 微软宣布12月15日关闭开源软件托管平台CodePlex

    网易科技讯4月1日消息,据Venturebeat报道,微软今天宣布,将关闭开源软件托管平台CodePlex.微软2006年推出这项服务,并决定在今年12月15日将其关闭. 微软公司副总裁布莱恩·哈里( ...

  3. 没得玩了!腾讯这款游戏宣布将于12月15日停服

    11月5日消息,腾讯游戏旗下<天天飞车>发布停服公告,称由于业务调整,腾讯将于2020年12月15日11点对<天天飞车>进行停服,结束测试. 停服的具体事项安排如下: 2020 ...

  4. [《南国雪下》闲笔记事集]2010年12月15日 记雪

    朋友的第一条短信:下雪子了,家里可能要下雪了哦! 不一会儿,朋友的第二条短信追来:下雪了,下雪了,很大,很大,就一会儿,全白了,好美哦! 我似乎感觉到朋友此刻的心,应该是狂跳的吧!用手一抹胸口,原来是 ...

  5. 【历史上的今天】12 月 15 日:网景浏览器正式发布;AIM 停止服务;北大研制新一代电子出版系统

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 15 日,在 55 年前的今天,美国动画制作家迪斯尼逝世.他创造的米老鼠形象曾经给世界上的 ...

  6. pytorch 和torchvision 版本对应(2021年12月15日最新版)

    pytorch 和torchvision 版本对应 原文链接 2021年12月15日更新: 2021年10月20日更新: 2021年7月14日更新:

  7. 青龙面板2.10.2搭建+XDD-PLUS搭建,保姆级搭建教程。【21年12月15日更新】

    目录 1.准备工作 2.青龙面板搭建及拉库 3.安装go等环境 4.安装XDD-PLUS及配置 5.其他 12月15日更新内容 xdd-plus大佬更新了1.8版本已经更新了最新版的机器人了 更新方法 ...

  8. 使用宝塔 搭建青龙面板2.10.2+xdd-plus教程。【2021年12月15日更新】

    目录 1.准备工作 2.安装宝塔及docker 3.安装青龙及拉库 4.安装环境及XDD-PLUS 5.其他 12月15日更新内容 xdd-plus大佬更新了1.8版本已经更新了最新版的机器人了 更新 ...

  9. 个人空间岁末大回报活动12月15日获奖名单

    个人空间岁末大回报: 动手就有C币拿!活动已于15日启动,非常感谢各位网友的大力支持和积极参与,个人空间的所有工作人员在这祝大家好运,希望你们每天都能拿到C币存入社区银行! 欢迎各位获奖者去自己的银行 ...

最新文章

  1. Apache Flink 1.10.0 发布 | 云原生生态周报 Vol. 38
  2. 动态开辟指定数量的线程来查找动态开辟的数组中的1000000数据中的值
  3. 自然哲学的数学原理_物理起源点,牛顿《自然哲学的数学原理》
  4. 【UVA - 11292】Dragon of Loowater (贪心,水题,模拟,twopointer双指针)
  5. 3.0 go mod之远程仓库搭建-代码示例
  6. 数据分析工具选型3大秘诀,Excel竟未上榜
  7. 怎么样获取浏览器“该页无法显示”这类的异常 - -
  8. MapReduce Map数 reduce数设置
  9. mate10鸿蒙系统,华为将发布 MatePad Pro:搭载鸿蒙系统,麒麟 9000 处理器
  10. 菜鸟的学习之路(10) — LinkedList类
  11. sql 纵向求和_sql 行列转换 求和平均值等
  12. Java抽奖抢购算法
  13. 管理信息系统第一次作业
  14. IntelliJ IDEA安装lombok
  15. 【POJ 1182】食物链【“拓展域”并查集】
  16. Caused by: java.lang.ClassNotFoundException: Didn’t find class on path apk Android Studio解决方案
  17. 大数据平台容量评估_如何评估组织的数据平台
  18. WIN32汇编 菜单和加速键的使用
  19. 触摸屏:屏幕键盘(虚拟键盘)解决方案
  20. 一文彻底搞懂激光雷达原理!

热门文章

  1. php tp 聚合数据接口,TP5结合聚合数据天气预报API查询天气
  2. 【代码重构】临时字段(Temporary Field)-- 如何消除和处理代码中临时字段
  3. 编程常用单词1500个
  4. 终于搞定微信小程序canvas分享海报
  5. 【大爱】C++STL 常用 函数 用法(转载自duoduo3_69)
  6. 笔记本中的insert,idea中Alt + insert快捷键在笔记本中怎么输入
  7. js三座大山----(第三座山)
  8. Windows文件夹中文名称英文路径
  9. 如何安装ssl证书?
  10. 【USACO题库】3.2.4 Feed Ratios饲料调配