---------很简单的 一道 堆栈问题-------

1098: 括号配对问题
时间限制: 1 Sec  内存限制: 128 MB
提交: 9  解决: 5
[提交][状态][讨论版]
题目描述
现在,有一行括号序列,请你检查这行括号是否配对.

输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符.

输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No.

样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes

很简单的一道题   就是纯 堆栈问题    很适合 用于  理解堆栈的  例题  下面附上代码.

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,i,j,top,flag;
 5     char s[10000],st[5000];
 6     char c;
 7     scanf("%d\n",&n);
 8     for(i=1; i<=n; i++)
 9     {
10         top=-1;
11         scanf("%s",s);
12         flag=0;
13         for(j=0; c=s[j]; j++){
14             if(c==‘[‘ || c==‘(‘)
15             { //遇到左括号,则存入数组st(模拟栈操作——进栈)
16                 top++;
17                 st[top]=c;
18             }
19             else
20             { //遇到右括号,检查匹配情况
21                 if(top<0)
22                 {
23                     flag=1;
24                     break;
25                 } //栈为空,不匹配,跳出循环
26                 if(c==‘]‘ && st[top]==‘[‘ || c==‘)‘ && st[top]==‘(‘) //与栈顶匹配,——退栈
27                     top--;
28                 else //与栈顶不匹配,跳出循环
29                 {
30                     flag=1;
31                     break;
32                 }
33             }
34         }
35         if(flag || top>=0)
36             printf("No\n");
37         else
38             printf("Yes\n");
39     }
40     return 0;
41 }
时间: 2024-10-03 14:42:25

---------很简单的 一道 堆栈问题-------的相关文章

Redis入门很简单之二【常见操作命令】

Redis入门很简单之二[常见操作命令] 博客分类: NoSQL/Redis/MongoDB redisnosql缓存 Redis提供了丰富的命令,允许我们连接客户端对其进行直接操作.这里简单介绍一下作为常用的一些命令,包括对字符串.列表.集合.有序集合.哈希表的操作,以及一些其他常用命令. [ 基本操作] 1. 添加记录:通常用于设置字符串(string)类型,或者整数类型:如果key已经存在,则覆盖其对应的值. Shell代码   set name James 2. 获取记录:通过键获取值.

Redis入门很简单之六【Jedis常见操作】

Redis入门很简单之六[Jedis常见操作] 博客分类: NoSQL/Redis/MongoDB redisjedisnosql缓存教程 之前介绍了Jedis的基本操作,连接池的支持,以及和Spring的整合.接下来的内容,继续Jedis的最为常见的操作.主要包括常用的列表(list).集合(set).有序集合(sorted set).哈希表(hash)等数据结构,以及其他特性支持. <一>. 使用list: 可以使用列表模拟队列(queue).堆栈(stack),并且支持双向的操作(L或者

过四六级很简单,考研英语也不难,只是你的方法错了

在我看来,国产的老师都把英语当数学一样教,把语法扔给你~这相当于公式,然后背词汇~诺,这相当于变量.然后就往里套吧,这还不会么?然后讲完了怎么办呢?就是没完没了的做题,他们认为把该做的题都做了自然就提高了,如果还是做错怎么办?那就接着做啊,然后老师给你分析答案,为什么错了,怎么错了...而且很多老师都喜欢什么近义词辨析,本来记得挺清楚的,被反反复复辨析了几遍之后就全乱了. 不过中学英语能打下不错的语法底子,这非常非常重要,以后怎么学都用的着. 后来上了大学,考四六级,考研,被残害多年的小伙伴们还

王金战:改变一个差生真的很简单

当一个学生,反复遭遇失败的打击,他就变成了差生,没有一个学生生下来就注定是个差生.所以让一个差生变好真的很简单.    我刚参加工作的时候,不敢说这句话,但是我现在敢说,因为我多年的经历已经证明了这件事情.让一个差生变好真的很简单,怎么做呢?就是反其道而行之.差生是反复遭遇失败的打击后才产生的,让一个差生变好,就是让他反复享受到成功的喜悦,这个学生就会慢慢地变好了.    少年来我就用这样的方法和理念,帮着一个个学生走出困境,走向成功.我深深体会到,作为教师,作为家长,要学会欣赏孩子.特别是对那

【结果很简单,过程很艰辛】记阿里云Ons消息队列服务填坑过程

Maybe 这个问题很简单,因为解决方法是非常简单,但填坑过程会把人逼疯,在阿里云ONS工作人员.同事和朋友的协助下,经过一天的调试和瞎捣鼓,终于解决了这个坑,把问题记下来,也许更多人在碰到类似问题的时候,会开放思路.当然不得不说,Ons的.NET接口还很不完善,甚至没有独立在Windos 2008/2012服务器测试过,希望官方加把力. 1.阿里云ONS介绍 ONS(Open Notification Service)即开放消息服务,是基于阿里开源消息中间件MetaQ(RocketMQ)打造的

我的要求很简单,有历史版本功能。协作我当用不上,没有人可以协作(快盘以前是金山的,2014年快盘被迅雷收购)

国空的网盘很多,如百度,360,115,Dbank,新浪V盘等等.这些网盘的确很大,都TB级别的,但是这些网盘并不适合我的要求.我的要求很简单,有历史版本功能.协作我当用不上,没有人可以协作. 方案一:快盘的同步目录选择也很简单,直接可以在设置账号中进行选择主要同步目录.另外目录或者文件上右击也可以选择同步某一文件夹或者文件.快盘还可以定时同步,并选择不同步的文件类型.相对来说很方便了.快盘的同步机制不太了解,但是只要文档一修改保存,快盘就会自动同步.这和Dropbox比较像,但是机制是否相同就

mysql数据库很简单操作

进入linux系统 root   >/usr/bin/mysql -u root mysql>show databases;                    #查看数据库 mysql>use  testtable;                        #testtable 为所要查看的库,应用数据库 mysql>show tables;                          #查看所有表 mysql>desc abc_table          

魔咒词典------HDOJ杭电1880(字符串的处理,很简单)

Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助. 给你一部魔咒词典.当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能:当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒.如果他要的魔咒不在词典中,就输出"what?" Input 首先列出词典中不超过100000条不同的魔咒词条,每条格式

实现strcmp很简单的思维

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> void strcom(char *str1 , char *str2,int *num) { int a = 0; int count = 0; //关键在这里 用指针进行循环判断 while (*str1&&*str2) { str1++; str2++; if ((a=*str1 - *str2) != 0) { *num