括号配对问题//正在奋斗的弱弱的程序员
来源:互联网 发布:python 登录界面 编辑:程序博客网 时间:2024/05/18 02:05
题目:第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),
测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
解决这道题,首先要知道括号配对满足的条件是什么。1.左括号与右括号个数相等2.左右括号配对次序正确解决这道题要用到“栈”输入字符串 从开始往后查 当遇到左括号时将之进入栈,继续往后查 当遇到右括号时就要与“栈”的首个比较看是否配对当配对时 将配对的符号从栈中取出,不配对时即break;以下两种情况还需特判一下1.字符最后一个判断完了 但最后栈里是否还有。2.栈里没有了 但查到了右括号即无法找到栈中左括号/////////////////////////////////////////括号配对#include<stdio.h>#include<string.h>char zhan[10010];////进栈char s[10010];int main(){ int t,k,len,sign;//len用于判断是否停止 scanf("%d",&t); while(t--) { scanf("%s",s); len=strlen(s); k=-1;sign=1; for(int i=0;i<len;i++) { if(s[i]=='['||s[i]=='(')//入栈 zhan[++k]=s[i]; else if((s[i]==']'&&k!=-1&&zhan[k]=='[')||(s[i]==')'&&k!=-1&&zhan[k]=='('))////进栈查找 zhan[k--]='\0'; else//查找不符合 { sign=0; break; } if(i==len-1&&k!=-1)//最后一个查完 了但栈里还有的情况 { sign=0; break; } } if(sign==1) printf("Yes\n"); else printf("No\n"); memset(s,0,sizeof(s)); }}第一次写博客 欢迎老油条 大佬指出错误
阅读全文
0 0
- 括号配对问题//正在奋斗的弱弱的程序员
- 括号配对问题 栈的使用
- 栈的经典问题:括号配对
- NYOJ2 括号配对问题(栈的运用)
- 【栈的简单使用】括号配对问题
- NYOJ2括号配对问题( 栈的应用)
- nyoj 括号配对问题(stack的使用)
- 实现简单的花括号配对问题
- 括号的配对
- 使用栈的技术,解决括号配对的问题
- 简单的括号配对判断
- 基于栈的括号配对
- 栈的应用-----括号配对
- NYOJ 2 括号配对问题 数据结构栈的应用
- 括号配对问题 栈(stack)的利用
- 括号配对问题(NYOJ) ----stack的应用
- NYOJ 2 括号配对问题【栈的运用】
- NYoj02括号配对问题(栈的用法)
- 菲波那切数列与生成器
- c++基础之多重继承
- Run Loop
- 【实战】qq账户和密码的发送器
- 生活小记36
- 括号配对问题//正在奋斗的弱弱的程序员
- CSS 经典导航
- JZOJ 5436. 【NOIP2017提高A组集训10.30】Group
- poj1753Flip Game之 广搜解法+暴搜解法
- 聚类之DBSCAN学习
- 国际化
- 【HDU
- sublime配置C语言和c++编译环境
- Redis有序集合