UVA - 673 Parentheses Balance
2016-07-21 19:15
435 查看
UVA - 673 Parentheses Balance
题目大意:1)空串为真 , 2)若字符串A为真,则(A) [A]都为真。3)字符串A和B都真,则字符串AB为真。求给出的串是否为真解题思路:从左往右扫 最近的两个如果配对就去掉 不停的扫 直到全部去掉 或者没有东西可以去掉
注意:字符串可能是空的
/************************************************************************* > File Name: UVA-673.cpp > Author: Robin > Mail: 499549060@qq.com > Created Time: 2016年07月21日 星期四 15时26分06秒 ************************************************************************/ #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> using namespace std; int main() { int N; scanf("%d\n", &N); string s; int pd[10000]; while (N--) { getline(cin,s); int flag = 0; memset(pd, 0, sizeof(pd)); while(1) { flag = 1; int t = 0; while(pd[t] && t < s.length())t++; int cc = t; char c = s[t]; int tt = t+1; while (pd[tt] && tt < s.length())tt++; for (int i = tt; i < s.length(); i++) { if (pd[i]) continue; if ((c == '[' && s[i] == ']') || (c == '(' && s[i] == ')')) { pd[cc] = 1; pd[i] = 1; flag = 0; break; } else { cc = i; c = s[i]; } } if (flag) break; } for (int i = 0; i < s.length(); i++) if (!pd[i]) flag = 0; else flag = 1; if (flag) printf("Yes\n"); else printf("No\n"); } }
相关文章推荐
- 获取缓存大小和清除缓存功能
- Servlet
- UVA - 10152 ShellSort
- AndroidStudio设置三步走
- Linux下安装jdk
- Java链栈
- scrollview滑动跟侧滑的冲突
- 2016.07.08【初中部 NOIP提高组 】模拟赛C
- 1061. Dating (20)-PAT甲级真题
- (转)FTP操作类,从FTP下载文件
- UVA - 133 The Dole Queue
- 如何实现 Android 应用的持续部署?
- RISC诞生与发展的缩影
- UVA - 101 The Blocks Problem
- 几种UML类图关系
- UVA - 10106 Product
- 1101. Quick Sort (25)-PAT甲级真题
- UVA - 10494 If We Were a Child Again
- Android权限之sharedUserId和签名 .
- 30分钟学会EventBus3.0详解(一)(引入和初始化EventBus3.0)(by星空武哥)