C++:泛型编程stack(括号匹配)

来源:互联网 发布:股票盯盘系统公式 源码 编辑:程序博客网 时间:2024/06/07 17:33

泛型编程stack(括号匹配)

Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByte
Total Submit:66 Accepted:33

Description

假设表达式中包含一种括号:圆括号,其嵌套顺序随意,即(()())或(())等为正确的格式,)(或((())或())均为不正确的格式。检验括号是否匹配可以用堆栈来实现当遇到 ( 时进栈,遇到 ) 时出栈进行匹配检验,如果出现不匹配的情况立即结束,否则继续取下一个字符。如果没有遇到不匹配的情况,最后判断栈是否为空,栈为空,括号匹配,否则不匹配。

Input

包括多组数据。每组1行,为包含括号的表达式。

Output

如果是正确的格式,输出“Yes”,否则输出“No”

Sample Input

(()())
(())
(()
())
(
)

Sample Output

Yes
Yes
No
No
No
No


#include<iostream>#include<stack>using namespace std;int main(){    stack<char> s;    char c[20];    int i;    while(cin>>c)    {       s.push(c[0]);        i=1;        while(c[i]!='\0')        {              if(s.size()==0)                s.push(c[i]);            else if(s.top()=='('&&c[i]==')')                s.pop();            else                s.push(c[i]); i++;        }        if(s.empty()==1)            cout<<"Yes"<<endl;        else        {        cout<<"No"<<endl;            while(!s.empty())                s.pop();        }    }    return 0;}
1 0
原创粉丝点击