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也是規則序列。例如,下面的...