description
假設表示式中允許包含兩種括號:圓括號和方括號,其巢狀的順序隨意,如([ ]())或[([ ][ ])]等為正確的匹配,[( ])或([ ]( )或 ( ( ) ) )均為錯誤的匹配。
現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?
輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 「ok」 ,不匹配就輸出「wrong」。
input
輸入僅一行字元(字元個數小於255)
output
匹配就輸出 「ok」 ,不匹配就輸出「wrong」。
sample input
[([][])]
sample output
ok
解題思路:先以字串的形式讀入,然後進行判斷,如果是
』[『或者
』(『就入棧,如果是』)』
或者』]』
就進行判斷,如果它符合要求就出棧,不然就返回
false
,最後輸出
ok或者
wrong
即可。
程式:
const
maxn=20;
var
c:string;
function judge(c:string):boolean;
var
s:array[1..maxn]of char;
top,i:longint;
ch:char;
begin
judge:=true;
top:=0;
for i:=1 to length(c) do
begin
ch:=c[i];
case ch of
'[','(':begin inc(top); s[top]:=ch; end;
']',')':if ((s[top]='(') and (ch=')') or (s[top]='[') and (ch=']')) and (top>0) then dec(top) else begin judge:=false; exit; end;
end;
end;
if top<>0 then judge:=false;
end;
begin
readln(c);
if judge(c) then writeln('ok') else writeln('wrong');
end.
棧 1354 括弧匹配檢驗
題目描述 假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,如 或 等為正確的匹配,或 或 均為錯誤的匹配。現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 ok 不匹配就輸出 wrong 輸入乙個字串 ...
括弧匹配檢驗 UPC
假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,如 或 等為正確的匹配,或 或 均為錯誤的匹配。現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 ok 不匹配就輸出 wrong 輸入乙個字串 輸出 ok...
括弧匹配檢驗 括號匹配問題
題目描述 假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,如 或 等為正確的匹配,或 或 均為錯誤的匹配。現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 ok 不匹配就輸出 wrong 輸入乙個字串 ...