candela是一名漫畫家,她有乙個奇特的愛好,就是在紙上畫括號。這一天,剛剛起床的candela畫了一排括號序列,其中包含小括號( )、中括號[ ]和大括號,總長度為n。這排隨意繪製的括號序列顯得雜亂無章,於是candela定義了什麼樣的括號序列是美觀的:
(1) 空的括號序列是美觀的;
(2) 若括號序列a是美觀的,則括號序列 (a)、[a]、 也是美觀的;
(3) 若括號序列a、b都是美觀的,則括號序列ab也是美觀的。
例如 [(){}]() 是美觀的括號序列,而 )(]( 則不是。
現在candela想在她繪製的括號序列中,找出其中連續的一段,滿足這段子序列是美觀的,並且長度盡量大。你能幫幫她嗎?
棧+模擬
不小心想到了乙個特別的資料((()(((),搞得想了好一會。
我們畫乙個階梯圖,乙個左括號我們上一層,乙個右括號下一層,如果發現不匹配的右括號直接刪除所有。
上面那個資料的關鍵是兩個()是否連續的問題,根據我們這種畫法,一組括號連續,僅當它對應的右括號跟它落在同一層上。這樣兩括號間的所有括號都是美觀的括號序列。
對於當前的大小,我們放到i-1層,表示向下傳遞。
#include#include#includeusing namespace std;
const int maxl=100010;
char c[maxl];int len;
char sta[maxl];int top=0;
int f[maxl];//記錄f[i]層的括號數
int main()
else if(top!=0)
else}}
}while(1)
printf("%d\n",ans);
return 0;
}
CH1801 括號畫家(棧模擬)
描述 candela是一名漫畫家,她有乙個奇特的愛好,就是在紙上畫括號。這一天,剛剛起床的candela畫了一排括號序列,其中包含小括號 中括號 和大括號,總長度為n。這排隨意繪製的括號序列顯得雜亂無章,於是candela定義了什麼樣的括號序列是美觀的 1 空的括號序列是美觀的 2 若括號序列a是美...
括號畫家 棧
達達是一名漫畫家,她有乙個奇特的愛好,就是在紙上畫括號。這一天,剛剛起床的達達畫了一排括號序列,其中包含小括號 中括號 和大括號,總長度為n。這排隨意繪製的括號序列顯得雜亂無章,於是達達定義了什麼樣的括號序列是美觀的 1 空的括號序列是美觀的 2 若括號序列a是美觀的,則括號序列 a a 也是美觀的...
AcWing 150 括號畫家(棧)
這一天,剛剛起床的達達畫了一排括號序列,其中包含小括號 中括號 和大括號,總長度為n。這排隨意繪製的括號序列顯得雜亂無章,於是達達定義了什麼樣的括號序列是美觀的 1 空的括號序列是美觀的 2 若括號序列a是美觀的,則括號序列 a a 也是美觀的 3 若括號序列a b都是美觀的,則括號序列ab也是美觀...