E-栈--括号匹配
2015-12-04 21:18
316 查看
1
#include<stack> #include<string.h> #include<stdio.h> using namespace std; char s[2000]; int main() { while(gets(s)) { stack<char >x; int len=strlen(s); int z=0; for(int i=0; i<len ; i++) { if(s[i]=='('||s[i]=='['||s[i]=='{') x.push(s[i]); if(s[i]==')'||s[i]==']'||s[i]=='}') { if (s[i] == '}'&&!x.empty()&&x.top() == '{')x.pop(); else if (s[i] == ')'&&!x.empty()&&x.top() == '(')x.pop(); else if (s[i] == ']'&&!x.empty()&&x.top() == '[')x.pop(); else { z++; break; } } } if(z==0&&x.empty())printf("yes\n"); else printf("no\n"); } }
2
//hrbust1054 #include <stdio.h> #include<algorithm> #include<cstring> #include<stack> #include<iostream> using namespace std; int main() { char c[1000]; int N,i,d=1; sca 4000 nf("%d",&N); while(N--) { scanf("%s",&c); int str=strlen(c); stack<char> st; for(i=0;i<str;i++) { if(c[i]=='('||c[i]=='{'||c[i]=='[') st.push(c[i]); else if(c[i]==')'&&!st.empty()&&st.top()=='(') st.pop(); else if(c[i]==')'&&!st.empty()&&st.top()!='(') d=0; else if(c[i]==')'&&st.empty()) d=0; else if(c[i]==']'&&!st.empty()&&st.top()=='[') st.pop(); else if(c[i]==']'&&!st.empty()&&st.top()!='[') d=0; else if(c[i]==']'&&st.empty()) d=0; else if(c[i]=='}'&&!st.empty()&&st.top()=='{') st.pop(); else if(c[i]=='}'&&!st.empty()&&st.top()!='{') d=0; else if(c[i]=='}'&&st.empty()) d=0; } if(!st.empty()||d==0) printf("Invalid\n"); else printf("Valid\n"); d=1; } return 0; }
相关文章推荐
- project euler 38
- 53,类方法
- 数组循环语句练习
- Java [Leetcode 39]Combination Sum
- LibSVM C/C++
- project euler 37
- LibSVM C/C++
- hud 2099
- PHPCMS几个有用的全局函数
- hdu1176
- java获取系统时间比实际时间少了8个小时的解决方法
- NYOJ 119士兵杀敌(三)【RMQ裸题】
- EF--.net
- [leetcode] Ugly Number II
- otsu算法---matlab实现,和一种改进算法
- 解压版的Tomcat基本配置和安装
- 双向循环链表的实现
- 大数据时代:生活、工作与思维的大变革(上)
- 复杂链表的复制(C++)
- 一个操作系统的实现(1):分析linux下如何运行一个执行文件