pascal括号匹配检查的程序,用栈的(最好有解释)
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/04 10:40:44
pascal括号匹配检查的程序,用栈的(最好有解释)
一个只由大括号{},中括号[],小括号()组成的字符串,其嵌套次序只能是:大括号可以嵌套中小括号,中括号可以嵌套小括号.现给出n个这样的字符串(每行一个字符串,字符串中无空格),判断其是否正确匹配,若匹配,该行输出“YES”,否则该行输出“NO”(YES和NO均为大写字符,输出时不要输出引号).
如下是正确匹配样例:
{[()]()[()]}
()()[()]{[()]}
()[()]
{()()[]}
以下不匹配样例:
([]) 注:中括号置于小括号中
[()(] 注:括号不成对
Input
第一行,n值(小于10).
接下来n行,每行一个字符串,每个字符串的长度均不超过250个字符.
Output
n行,每行为“YES”或“NO”,以判断对应行是否匹配.
Sample Input
6 //n为6,表示有6个字符串待检测
{[() ]()[() ]} //以下为6个字符串,每行一个
( )( ) [()]{[()]}
([])
[()(]
()[()]
{()()[ ] }
Sample Output
YES
YES
NO
NO
YES
YES
一个只由大括号{},中括号[],小括号()组成的字符串,其嵌套次序只能是:大括号可以嵌套中小括号,中括号可以嵌套小括号.现给出n个这样的字符串(每行一个字符串,字符串中无空格),判断其是否正确匹配,若匹配,该行输出“YES”,否则该行输出“NO”(YES和NO均为大写字符,输出时不要输出引号).
如下是正确匹配样例:
{[()]()[()]}
()()[()]{[()]}
()[()]
{()()[]}
以下不匹配样例:
([]) 注:中括号置于小括号中
[()(] 注:括号不成对
Input
第一行,n值(小于10).
接下来n行,每行一个字符串,每个字符串的长度均不超过250个字符.
Output
n行,每行为“YES”或“NO”,以判断对应行是否匹配.
Sample Input
6 //n为6,表示有6个字符串待检测
{[() ]()[() ]} //以下为6个字符串,每行一个
( )( ) [()]{[()]}
([])
[()(]
()[()]
{()()[ ] }
Sample Output
YES
YES
NO
NO
YES
YES
program bracket;
const
a:array['a'..'d']of byte=(1,2,3,0);
var
n,t,i,j:longint;
p:boolean;
s:string;
c:array[0..255]of char;
procedure pop;
begin
dec(t);
end;
procedure push(x:char);
begin
inc(t);
c[t]:=x;
end;
begin
readln(n);
for i:=1 to n do
begin
readln(s);
c[0]:='d';
t:=0;
p:=true;
for j:=1 to length(s) do
case s[j] of
'{':s[j]:='a';
'[':s[j]:='b';
'(':s[j]:='c';
end;
while length(s)0 do
begin
case s[1] of
'}':if c[t]='a' then pop else begin p:=false; break; end;
']':if c[t]='b' then pop else begin p:=false; break; end;
')':if c[t]='c' then pop else begin p:=false; break; end;
else if a[c[t]]
const
a:array['a'..'d']of byte=(1,2,3,0);
var
n,t,i,j:longint;
p:boolean;
s:string;
c:array[0..255]of char;
procedure pop;
begin
dec(t);
end;
procedure push(x:char);
begin
inc(t);
c[t]:=x;
end;
begin
readln(n);
for i:=1 to n do
begin
readln(s);
c[0]:='d';
t:=0;
p:=true;
for j:=1 to length(s) do
case s[j] of
'{':s[j]:='a';
'[':s[j]:='b';
'(':s[j]:='c';
end;
while length(s)0 do
begin
case s[1] of
'}':if c[t]='a' then pop else begin p:=false; break; end;
']':if c[t]='b' then pop else begin p:=false; break; end;
')':if c[t]='c' then pop else begin p:=false; break; end;
else if a[c[t]]
pascal括号匹配描述 给定一个算术表达式,检查其中的圆括号是否配对,给出适当信息(正好:Yes,左括号多:Left,
pascal 背包问题一段程序的解释
用free pascal来编个程序求数串的原始排列,最好每部有分析
用C++语言栈的形式求n!的阶乘以及用栈完成括号匹配检验程序
关于‘pascal.’的一道题的程序解释
问一下程序,pascal的.
求平均数的pascal程序
利用栈实现括号的匹配
检验括号匹配,用到栈的知识
帮忙解一道pascal题目,有程序的
c++括号匹配检验利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随
检验括号匹配的算法