CH1801 括號畫家(棧)(模擬)

2021-08-22 19:22:40 字數 897 閱讀 6425

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也是美觀...