输出文件stack.out包括一行,即“YES” 或“NO”。 【样例输入1】 2*(x+y)/(1-x)@ 【样例输出1】 YES 【样例输入2】 (25+x)*(a*(a+b+b)@ 【样例输出2】 NO #include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>usingnamespacestd;chara[256]...
//括号的匹配intmatching(){Stack s;InitStack(s);intflag=1;charch[10]="[(]]#";//读入//cin >> ch;inti=0;while(ch[i]!='#'&&flag!=0)//假设字符串以#结尾{if(ch[i]=='('||ch[i]=='['){PushbackStack(s,ch[i]);//入栈}if(ch[i]==')'||ch[i]==']'){if(IsEmpty(s))...
栈的思想,扫描字符c,若遇到‘(’进去,若遇到‘)’出去。注意两种情况:栈发生下溢和表达式处理完毕但栈非空时,都是NO。其他则是匹配。 代码实现: #include<bits/stdc++.h> using namespace std; bool judge(char c[256]) { int top=0,i=0; for(i=0;c[i]!='@';i++) { if(c[i]=='(') to...
1#include<iostream>2#include<cstring>3#include<stack>4usingnamespacestd;56stack<char>sta;78boolmatch(){9charc;10while(cin>>c){11if(c=='@')break;12if(c=='(')sta.push(c);13if(c==')'){14if(!sta.empty())sta.pop();15elsereturn0;16}17}18if(sta.empty())return1;19elsereturn...
}returnStackEmpty(S);//检索完全部括号后,栈空说明匹配成功}intmain(){charstr[MaxSize];fgets(str,MaxSize,stdin);// 检查字符串的最后一个字符是否为换行符,并去除它intlen =strlen(str);if(len >0&&str[len-1] =='\n') { str[len-1] ='\0'; ...
#include <iostream> #include <stack> #include <string> using namespace std; bool isValid(const string &s) { stack<char> stk; for (char c : s) { if (c == '(' || c == '[' || c == '{') { stk.push(c); } else if (c == ')' |...
在判断括号是 否匹配时需要用到一个栈(因为每个右括号都是和前面最近的左括号匹配),采用stack char容器作为栈。 对应的完整程序如下: # include iostream # include stack # include string using namespace std; bool solve(string str) //判断str中的括号是否匹配 stack char st; int i=0: while (istr. ...
简介: 1353:表达式括号匹配(stack) 1353:表达式括号匹配(stack) 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 假设一个表达式有英文字母(小写)、运算符(+,—,∗,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回...
//freopen("1353:表达式括号匹配(stack).in", "r", stdin); cin>>c; if(judge(c)){ cout<<"YES"<<endl; }else{ cout<<"NO"<<endl; } return0; } 【示例代码2: STL-stack实现】 #include<cstdio> #include<iostream> #include<stack> ...
#include <stdio.h>#include <string.h>#define MAXSIZE 1000typedef char datatype;typedef struct{ datatype s[MAXSIZE]; int top;}stack;void init(stack* s){ s->top = 0;}void push(stack* s, datatype c){ s->s[s->top++] = c;}int empty(stack* s){ return s->top == 0;}data...