括號序列 總結

2021-10-03 10:32:46 字數 2133 閱讀 3995

cf 1214c

題意:問只移動乙個括號,是否可以使這個序列合法

分析:( 相當於1,)相當於-1; 在讀入時,統計字首和sum,如果,合法的序列,『( 』 與 『 )』會相互抵消。假若sum出現過<-1 的情況,即代表有超過乙個的『 )』沒有得到匹配,所以,只移動1個括號是不可能使它合法。

如果最後的sum!=0,代表 『( 』 與 『 )』的個數不相等,肯定不合法。

**:

#include

#include

#include

#include

#include

#include

#define mod 1000000007

using

namespace std;

typedef

long

long ll;

const

int maxn =

2e5+10;

char str[maxn]

;int

main()

if(sum!=

0) flag=1;

if(flag==0)

puts

("yes");

else

puts

("no");

return0;

}

牛客集訓營4-b

題意:有 [ , ] , , ( , ) 六種符號,問給出的序列是否合法

分析:用vector ,大體思路就是 每放入vector中乙個字元,就與上乙個字元進行判斷,如果是一對,那就用兩個vec.pop_back();刪掉這一對字元,不是就不用管了,接著輸下乙個字元, 輸入的字元是『\n』 就代表字串輸入完了, 然後判斷vector是否為空集就可以了

**:

#include

#include

#include

#include

#include

#include

#define mod 1000000007

using

namespace std;

typedef

long

long ll;

intmain()

else

if(a[len-2]

=='('

&&x==

')')

else

if(a[len-2]

==''

)scanf

("%c"

,&x);}

if(!a.empty()

)cout<<

"no"

"yes"

}

三.

題目:

合法括號序列的定義是:

1.空序列是合法括號序列

2.如果 s 是乙個合法括號序列,那麼(s)是合法括號序列

3.如果 a 和 b 都是合法括號序列,那麼 ab 是乙個合法括號序列

現在給定乙個括號序列,求最少刪去幾個括號能得到乙個合法的括號序列

輸入包含 t 組資料,每組資料中,設括號序列的長度為 n

1≤t,σn≤1,000,000

(由於空串是合法的括號序列,所以答案可以是n)

#include

#include

#include

#include

#include

#include

#define mod 1000000007

using

namespace std;

typedef

long

long ll;

intmain()

}//cout("%c"

,&x);}

cout

<}return0;

}

括號序列(棧)

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

合法括號序列

合法括號序列 鍵盤上有左括號 右括號 和退格鍵 共三個鍵。牛牛希望按鍵n次,使得輸入的字串恰好乙個合法的括號序列。每按一次左括號 字串末尾追加乙個左括號 每按一次右括號 字串末尾追加乙個右括號 每按一次退格鍵 會刪掉字串的最後乙個字元,特別的,如果字串為空,牛牛也可以按退格,但是什麼都不會發生。輸出...

2058 括號序列

時間限制 2 s 空間限制 128000 kb 題目等級 silver 題解檢視執行結果 description 定義滿足以下規則字串為規則序列,否則不是規則序列 1 空序列是規則序列 2 如果s是規則序列,那麼 s s 和也是規則序列 3 如果a和b都是規則序列,那麼ab也是規則序列。例如,下面的...