棧練習括弧匹配檢驗
description
假設表示式中允許包含兩種括號:圓括號和方括號,其巢狀的順序隨意,如([ ]())或[([ ][ ])]等為正確的匹配,[( ])或([ ]( )或 ( ( ) ) )均為錯誤的匹配。
現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?
輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 「ok」 ,不匹配就輸出「wrong」。
input
輸入僅一行字元(字元個數小於255)
output
匹配就輸出 「ok」 ,不匹配就輸出「wrong」。
分析:遇到左括號就入棧,遇到右括號如果匹配就將棧頂左括號出棧,不匹配就是wrong。
**
vara:array[0..1000] of char;
ch:char;
l:longint;
begin
while not eoln do
begin
read(ch);
if (ch='[') or (ch='(') then
begin
inc(l);
a[l]:=ch;
endelse
begin
if ch=']' then if a[l]<>'['
then begin
writeln('wrong');
halt;
endelse dec(l);
if ch=')' then if a[l]<>'('
then begin
writeln('wrong');
halt;
endelse dec(l);
end;
end;
if (ch='(') or (ch=']') or (l>0) then
begin
writeln('wrong');
halt;
end;
writeln('ok');
end.
luogu P1659 養豬 dp 好理解
你有乙個豬圈,有n頭豬,每天你最多可以殺一頭豬賣錢,獲益就是豬的體重。但是每過一天每頭豬的體重都會下降p i 當然,如果豬體重 0了,自然獲利為0 問k天內你的最大獲利。輸入格式 第一行兩個數n k 第二行n個數,表示豬的初始重量a i 第三行n個數表示p i 資料規模 對於20 的資料,滿足1 n...
洛谷P1659 啦啦隊排練
題目大意 給定乙個長度為 n 的字串,求前 k 個長度為奇數的回文子串的長度的乘積是多少。題解 利用回文自動機,將所有長度的回文串和個數求出來,按照長度排序進行模擬即可。如下 luogu judger enable o2 include using namespace std const int m...
NOJ1659 求值 log10取對 floor
想法 看題目就知道無法使用陣列,這就要想到使用對數來使資料以指數形式儲存,因為c是小於10,這個辦法顯然可行。具體思路上,a b x,那麼設t b log10 a 於是,t的整數部分即為10的n次方,相當於x 10 n,而t的小數部分就可以拿來控制位數,當要求c位時乘以10 c 1 即可。核心 in...