POJ 3991 括号匹配问题
2016-03-07 19:10
465 查看
Description
I’m out of stories. For years I’ve been writing stories, some rather silly, just to make simple problems look difficult and complex problems look easy. But, alas, not for this one.
You’re given a non empty string made in its entirety from opening and closing braces. Your task is to find the minimum number of “operations” needed to make the string stable. The definition for being stable is as follows:
An empty string is stable.
If S is stable, then {S} is also stable.
If S and T are both stable, then ST (the concatenation of the two) is also stable.
All of these strings are stable: {}, {}{}, and {{}{}}; But none of these: }{, {{}{, nor {}{.
The only operation allowed on the string is to replace an opening brace with a closing brace, or visa-versa.
Input
Your program will be tested on one or more data sets. Each data set is described on a single line. The line is a non-empty string of opening and closing braces and nothing else. No string has more than 2000 braces. All sequences are of even length.
The last line of the input is made of one or more ’-’ (minus signs.)
Output
For each test case, print the following line:
k. N
Where k is the test case number (starting at one,) and N is the minimum number of operations needed to convert the given string into a balanced one.
Sample Input
Sample Output
I’m out of stories. For years I’ve been writing stories, some rather silly, just to make simple problems look difficult and complex problems look easy. But, alas, not for this one.
You’re given a non empty string made in its entirety from opening and closing braces. Your task is to find the minimum number of “operations” needed to make the string stable. The definition for being stable is as follows:
An empty string is stable.
If S is stable, then {S} is also stable.
If S and T are both stable, then ST (the concatenation of the two) is also stable.
All of these strings are stable: {}, {}{}, and {{}{}}; But none of these: }{, {{}{, nor {}{.
The only operation allowed on the string is to replace an opening brace with a closing brace, or visa-versa.
Input
Your program will be tested on one or more data sets. Each data set is described on a single line. The line is a non-empty string of opening and closing braces and nothing else. No string has more than 2000 braces. All sequences are of even length.
The last line of the input is made of one or more ’-’ (minus signs.)
Output
For each test case, print the following line:
k. N
Where k is the test case number (starting at one,) and N is the minimum number of operations needed to convert the given string into a balanced one.
Sample Input
}{ {}{}{} {{{} ---
Sample Output
1. 2 2. 0 3. 1
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<cmath> #include<stack> using namespace std; stack<char>ss; char a[2200]; int main() { int ans,i,j,num=0; while(scanf("%s",a)!=EOF) { ans=0; if(a[0]=='-') break; while(!ss.empty()) ss.pop(); int len=strlen(a); for(i=0;i<len;i++) { if(a[i]=='{') ss.push(a[i]); else { if(ss.empty()) { ans++; ss.push('{'); } else ss.pop(); } } int t=0; while(!ss.empty()) { t++; ss.pop(); } ans+=t/2; num++; printf("%d. %d\n",num,ans); } return 0; }
相关文章推荐
- eclipse导入代码时中文乱码 解决方案
- Android studio 如何查看模拟器里面的文件
- 现在的我
- 原码、反码和补码
- redis安装及用法
- [mysql语句] mysql 语句收集
- iOS关闭键盘的方法
- HUST 1606 判断一个数是否是3个数的立方和 (暴力)
- Android代码格式化方法和Eclipse重要快捷键
- C++内存布局(下)
- pat1006:换个格式输出整数
- Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
- BZOJ 2260 商店购物 & 4349 最小树形图
- 网上通缉令管理系统
- Android DataBinding介绍
- JSP的九大内置对象
- 关于STM32使用RTC唤醒停止模式的设置
- leetcode Longest Palindromic Substring
- 【Spring】Spring Security 相关知识学习总结
- iOS短信验证