HRBUST 2230 括號子串行 A(DP)

2021-09-17 21:36:57 字數 798 閱讀 1250

一段括號序列被稱為平衡的,如果對於任意字首,左括號的數目都不小於右括號。

給定一段括號序列,問有多少括號子串行是平衡的。(內容相同但位置不同的算兩種。)

input

輸入一行括號序列,括號序列的長度 <= 100。

output

輸出一行表示答案模 10^9 + 7 後的結果。

sample input

(()())

sample output

18hint

樣例一:

()__

(__)

()__

(__)

(__)

__()

__()

()()

()()

()()

()()

(())

(())

解析:dp[i]表示左括號比右括號多i的方案數,當前值為左括號時 可以代替之前出現過的任意乙個左括號或者作為新的括號出現,所以dp[i]+=dp[i-1],右括號同理

#includeusing namespace std;

const int n = 1e2+10;

const int m = 1e3;

typedef long long ll;

const ll mod = 1e9+7;

char str[200];

ll dp[n];

int main()

}else}}

cout<}

return 0;

}

合法括號子段

有乙個括號序列,現在要計算一下它有多少非空子段是合法括號序列。合法括號序列的定義是 1.空序列是合法括號序列。2.如果s是合法括號序列,那麼 s 是合法括號序列。3.如果a和b都是合法括號序列,那麼ab是合法括號序列。input 多組測試資料。第一行有乙個整數t 1 t 1100000 表示測試資料...

最長匹配括號子串行問題

給定乙個字串只包含 和 輸出其中最長的括號正確匹配的子串行的長度。輸入輸出 2 4 2 8以下將介紹三種複雜度為o n 的演算法 該演算法利用了棧來遍歷可能的匹配的括號子串行,遍歷的同時找出最長的子串行。遍歷不會遍歷所有的匹配括號子串行,併排的一些括號只有包含最左邊括號的子串行被遍歷,最長的括號子串...

HRBUST 語法檢查 括號匹配 棧

time limit 1000 ms memory limit 65536 k 有多組測試資料,每組測試資料有一段 該段 可能在有多行。每段 以ctrl z結束。處理到檔案結束。每組測試資料輸出一行。如果這段 括號匹配了,輸出 right 否則輸出 wrong。include right wrong...