1354:括弧匹配检验

简介: 1354:括弧匹配检验

1354:括弧匹配检验

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。

现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?

输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。输入一个字符串:[([][])],输出:OK。

【输入】

输入仅一行字符(字符个数小于255)。

【输出】

匹配就输出 “OK” ,不匹配就输出“Wrong”。

【输入样例】

[(])

【输出样例】

Wrong

1. #include <iostream>
2. #include <cstdio>
3. #include <cstring>
4. #include <stack>
5. using namespace std;
6. stack<char> s;
7. char ch[260];
8. int main(int argc, char *argv[])
9. {
10.   gets(ch);
11.   int l=strlen(ch); 
12.   for(int i=0;i<l;i++){
13.     if(ch[i]=='(') s.push('(');
14.     else if(ch[i]=='[') s.push('[');
15.     else if(ch[i]==')'){
16.       if(s.empty()){cout<<"Wrong"<<endl;return 0;}
17.       else if(s.top()=='(') s.pop();
18.       else {cout<<"Wrong"<<endl;return 0;}
19.     }
20.     else if(ch[i]==']'){
21.       if(s.empty()){cout<<"Wrong"<<endl;return 0;}
22.       else if(s.top()=='[') s.pop();
23.       else {cout<<"Wrong"<<endl;return 0;}
24.     }
25.   }
26.   if(!s.empty()) cout<<"Wrong"<<endl;
27.   else cout<<"OK"<<endl;
28.   return 0;
29. }
1. #include <iostream>
2. #include <cstdio>
3. #include <stack>
4. using namespace std;
5. int main(int argc, char *argv[])
6. {
7.  stack<char> stk;
8.  char exp[260]={0};
9.  gets(exp);
10.   int i=0;
11.   while(exp[i]!='\0'){
12.     if(exp[i]=='('||exp[i]=='[')
13.       stk.push(exp[i]);
14.     else if(exp[i]==')'||exp[i]==']')
15.     {
16.       if(stk.size()) {
17.         if((exp[i]==')'&& stk.top()=='(')||(exp[i]==']' && stk.top()=='[')) stk.pop();
18.         else {
19.           cout<<"Wrong"<<endl;
20.           return 0;
21.         }
22.       }
23.       else {
24.         cout<<"Wrong"<<endl;
25.         return 0;
26.       }
27.     }
28.     i++;
29.   }
30.   if(!stk.size()) cout<<"OK"<<endl;
31.   else cout<<"Wrong"<<endl;
32.   return 0;
33. }

 

相关文章
|
编译器 开发工具 C++
Dev-C++详细安装教程及中文设置(附带安装包链接)
Dev-C++详细安装教程及中文设置(附带安装包链接)
6137 0
|
移动开发 算法 调度
【贪心算法】一文让你学会“贪心”(贪心算法详解及经典案例)
贪心算法是一种非常常见的算法,它的简单和高效性使其在实际应用中被广泛使用。 贪心算法的核心思想是在每一步都采取当前状态下最优的选择,而不考虑未来可能产生的影响。虽然贪心算法不能保证总是得到最优解,但在很多情况下,它可以获得很好的结果。 本篇文章将介绍贪心算法的基本概念和一些经典应用,以及如何通过贪心算法来解决一些实际问题。希望通过本文的阅读,读者可以对贪心算法有更加深刻的理解,并能够在实际问题中应用贪心算法来得到更好的解决方案。 让我们暴打贪心算法吧!
6532 0
|
Ubuntu Linux 编译器
用户态协议栈学习,DKDK基本用法介绍
用户态协议栈学习,DKDK基本用法介绍
940 0
【洛谷 P1618】三连击(升级版)题解(循环枚举+全排列)
该编程题目要求将数字1到9分为三组,形成三个三位数,使得这三个数成比例A:B:C。输入为A、B、C的值,输出符合条件的三位数组合,按首个数字升序排列。样例输入为1 2 3,输出多组解。代码使用全排列遍历数字,检查比例关系。若无解,则输出&quot;No!!!&quot;。
245 0
|
C++
信奥赛一本通2037:【例5.4】约瑟夫问题
题目描述】 N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;…输出依次出圈的人的编号。 【输入】 输入N和M。 【输出】 输出一行,依次出圈的人的编号。 【输入样例】
692 0
|
11天前
|
数据采集 人工智能 安全