最長合法括號序列 棧(括號題)

2021-09-30 16:59:01 字數 584 閱讀 9036

這是另一道處理合法括號序列的題目。

我們應該提醒你,如果乙個括號序列插入「+」和「1」後,可以得到乙個正 確的數學表示式,那麼它被稱為「合法」的。

例如,序列「(())()」,「()」和「(()(()))」是合法的,但「)(」,「(()」和「(()))(」不是。

給出乙個由「(」和「)」字元組成的字串。你要找出它最長的是合法括號序列的子串,也同樣要找出最長子串的個數。

括號題容易想到棧,把左括號壓進去,右括號會跟棧頂的左括號匹配,然後這個左括號會跟它位置-1的合法括號序列拼起來,所以記乙個dp即可

#include #define maxn 2000005

using namespace std;

int n,f[maxn],mx,ans;

stacks;

char c[maxn];

int main()

}for(int i=1;i<=n;i++)

if(mx==0) puts("0 1");

else printf("%d\n%d\n",mx,ans);

return 0;

}

最長合法括號序列

description 如果乙個括號序列插入 和 1 後,可以得到乙個正確的數學表示式,那麼它被稱為 合法 的。例如,序列 和 是合法的,但 和 不是合法的。給出乙個由 和 字元組成的字串 你要找出它最長的是合法括號序列的子串,也同樣要找出最長子串的個數。100 的資料 讀入的字串長度小於 等於10...

括號序列(棧)

定義滿足以下規則字串為規則序列,否則不是規則序列 1 空序列是規則序列 2 如果s是規則序列,那麼 s s 和也是規則序列 3 如果a和b都是規則序列,那麼ab也是規則序列。例如,下面的字串都是規則序列 而以下幾個則不是 現在,給你一些由 構成的字串,請判斷該字串是否為規則序列。第一行 乙個正整數n...

題解 括號序列 棧

可以猜到,ssw02爆0了 ssw02要懟一下 y 資料和標程都是反的,題還換錯了一道,t2做了一半換題意,s emmm 題目出現了九條老師.然後發現一句經典,不要先開題面 有九條 我妻 輸入 就是一行字串了 輸出 就是方案數了 我們先用棧來判斷是否合法,想著騙分,然後 咦?這個東西,可以簡化吧。然...