Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6409 Accepted Submission(s): 3891
((((B)()))()) (B)
4 1
#include<stdio.h> #include<string.h> #define max 20000 char a[max],b[max]; int main() { int top,k,i,count; top=0; while(gets(a)) { count=0; k=strlen(a); for(i=0;i<k&&a[i]!='B';i++) { if(a[i]=='(') count++; if(a[i]==')') count--; } printf("%d\n",count);
} return 0; }
① 声明 stack
stack<int> s;
② stack 的成员函数
s.push(x); 将 x 压栈,无返回值
s.pop(); 退栈,无返回值
s.top(); 取栈顶元素,返回栈顶元素
s.empty(); 判断栈是否为空,如果是,返回 1,否则返回 0
s.size(); 返回栈中元素的个数
③ stack 没有提供清空操作的函数,但可间接实现
while(!s.empty()) s.pop();
<pre class="cpp" name="code">#include<stdio.h> #include<string.h> #include<stack> using namespace std; char a[10000]; stack <char> x; int main() { int i,k,l; while(gets(a)) { l=strlen(a); for(i=0;i<l&&a[i]!='B';i++) { if(a[i]=='(') x.push('(');//让当前字符入栈 else if(a[i]==')') x.pop();//出栈一个 } printf("%d\n",x.size()); while(!x.empty())//栈清空 { x.pop(); } } return 0; }