资深守护
高级光能
这题最方便的方法是栈(stack)。不用栈的话会使得程序十分冗长,但是Pascal的系统中没有栈,要自己用数组模拟一遍。
思路:遇到前括号就进栈,遇到后括号看和栈顶括号是否匹配。
高级守护
var
s:字符串;
a:字符,1..10010;
st,i:integer;
begin
输入s
for i:=0 to s长度-1 do begin
if s[i]=='('||s[i]=='[' begin
a[st]=s[i];
st++;
end;
else begin
if (s[i]==']'与a[st-1]=='[')或者(s[i]==')'与a[st-1]=='(') st-1 else begin
write("NO");
结束整个程序
end;
end;
end;
write("YES");
end.
大概就是这样(允许我不知道某些Pascal怎么写,没学到就换语言了,而且忘了)
新手守护
stack<char> a;
string s;
getline(cin,s);
循环(int i=0;i<s.size(); i++)
{
如果(s[i]=='['||s[i]=='(')
{
a.push(s[i]);
}
否则
如果((s[i]==']'&&a.top()!='[')||(s[i]==')'&&a.top()!='('))
{
输出"NO";
返回值 0;
}
否则 如果(s[i]==']'||s[i]==')')
{
a.pop();
}
}
输出"YES";
黄昊轩在2018-04-16 12:55:17追加了内容
stack<char> a;
string s; getline(cin,s); for(int i=0;i<s.size(); i++) { if(s[i]=='['||s[i]=='(') { a.push(s[i]); } else if((s[i]==']'&&a.top()!='[')||(s[i]==')'&&a.top()!='(')) { cout<<"NO"; return 0; } else if(s[i]==']'||s[i]==')') { a.pop(); } } cout<<"YES";
头文件还要加个#include <stack>
修练者
for(int i=0;i<s.size(); i++) {
if(s[i]=='['||s[i]=='(')
{
a.push(s[i]);
}
else
if((s[i]==']'&&a.top()!='[')||(s[i]==')'&&a.top()!='('))
{
cout<<"NO";
return 0;
}
else if(s[i]==']'||s[i]==')')
{
a.pop();
}
}
资深守护
stack<char> a;
string s;
getline(cin,s);
循环(int i=0;i<s.size(); i++)
{
如果(s[i]=='['||s[i]=='(')
{
a.push(s[i]);
}
否则
如果((s[i]==']'&&a.top()!='[')||(s[i]==')'&&a.top()!='('))
{
输出"NO";
返回值 0;
}
否则 如果(s[i]==']'||s[i]==')')
{
a.pop();
}
}
输出"YES";
资深守护
stack<char> a;
string s;
getline(cin,s);
循环(int i=0;i<s.size(); i++)
{
如果(s[i]=='['||s[i]=='(')
{
a.push(s[i]);
}
否则
如果((s[i]==']'&&a.top()!='[')||(s[i]==')'&&a.top()!='('))
{
输出"NO";
返回值 0;
}
否则 如果(s[i]==']'||s[i]==')')
{
a.pop();
}
}
输出"YES";
资深守护
stack<char> a;
string s;
getline(cin,s);
循环(int i=0;i<s.size(); i++)
{
如果(s[i]=='['||s[i]=='(')
{
a.push(s[i]);
}
否则
如果((s[i]==']'&&a.top()!='[')||(s[i]==')'&&a.top()!='('))
{
输出"NO";
返回值 0;
}
否则 如果(s[i]==']'||s[i]==')')
{
a.pop();
}
}
输出"YES";