最長匹配3526
【問題描述】
對乙個由(,),[,],括號組成的字串,求出其中最長的括號匹配子串。具體來說,滿足如下條件的字串成為括號匹配的字串:
1.(),是括號匹配的字串。
2.若a是括號匹配的串,則(a),[a]是括號匹配的字串。
3.若a,b是括號匹配的字串,則ab也是括號匹配的字串。
例如:(),,(),()()都是括號匹配的字串,而][,[(]),(]則不是。
字串a的字串是指由a中連續若干個字元組成的字串。
例如,a,b,c,abc,cab,abcabc都是abcabc的子串。空串是任何字串的子串。
【輸入】
輸入一行,為乙個僅由()組成的非空字串。
【輸出】
輸出也僅有一行,為最長的括號匹配子串。若有相同長度的子串,輸出位置靠前的子串。
【樣例輸入1】
【樣例輸出1】
【樣例輸入2】
【樣例輸出2】
【資料範圍】
對於20%的資料,字串長度≤100。
對於50%的資料,字串長度≤10,000。
對於100%的資料,字串長度≤1,000,000。
棧模擬code:
1 #include2 #include3 #include4 #include5 #include6 #include7using
namespace
std;
8char ch[1000050];9
intn;
10int
st,ed;
11int
top,i;
12int sta[10000050
];13
intmain()
21if(ch[i]=='
('||ch[i]=='
[') sta[++top]=i;
22if(ch[i]==')'
)26if(ch[i]==']'
)30 i++;31}
32if(n-sta[top]-2>ed-st)
33if(ed-st>0)37
return0;
38 }
over
水題系列 5
水題系列1 prev 54 合根植物 想法 一道非常簡單的並查集,完完全全水題,但是也得需要一些並查集的基本理解 include includeusing namespace std mapmm int book 10000100 int n,m,sum,x,y,num 0 int fun int ...
計蒜客T1543 做水題
蒜頭君今天需要做一些水題讓自己快樂。但是蒜頭君現在時間不多啦,所以只能做一道題。蒜頭君知道每道題需要花費的時間和完成後的快樂度。他希望做單位時間內取得快樂度最多的那一道題。如果有快樂度相同的,他希望做題號較小的那一道。輸入格式 第一行乙個數 n,為題目個數。1 n 106 接下來 n 行每一行兩個數...
踩坑水題 0和5
小c手中有n張牌,每張牌上有乙個一位數的數,這個數字不是0就是5。小c從這些牌在抽出任意張 不能抽0張 排成一行就組成了乙個數。使得這個數盡可能大,而且可以被90整除。注意 1.這個數沒有前導0,2.小c不需要使用所有的牌。每個測試資料輸入共2行。第一行給出乙個n,表示n張牌。1 n 1000 第二...