禮物包裝 括號匹配 C語言棧操作

2021-10-07 08:12:51 字數 1051 閱讀 9532

這天,小特生日。他的好朋友給他送來了生日禮物,這些禮物都經過精心包裝放在若干個盒子裡,而禮物就放在最裡層的盒子裡。朋友給他送的禮物遵循了這樣一條規則, 越有價值的禮物應該放在越深的盒子裡。他收到禮物後,急切地想知道這些禮物的價值,於是他把他收到的禮物寫成括號的形式表示出來。具體他是這樣計算他的禮物的價值的:

1.-對括號代表乙個禮物盒子,盒子裡面可以再放盒子,即括號裡可以再放括號;若-對括號裡沒有括號,則代表裡面放著禮物。

2.單獨的一對括號代表這個禮物只有1層包裝,價值為1 (比如"()"表示價值為1的禮物)

3.兩個合法的括號序列的拼接而成的括號序列的價值是它們價值之和(比如"())"價值為1+1=2)

4.禮物每在盒子裡放的層數深-層, 它的價值就會翻倍。即巢狀括號序列的價值是,所巢狀的括號序列的價值的翻倍(比如((0))"價值為1*2* 2=4)

根據小特判斷禮物的規則,請告訴他,他所寫的括號代表了多少價值的禮物。

小特保證他寫的括號是正確合法的

input

乙個只包含'('和')'的合法的括號序列s,代表小特寫下的括號序列,乙個合法的括號序列是這樣定義的:1、()是合法的括號序列

2、若字串a和b是合法的括號序列,那麼ab也是合法的括號序列

3、若字串a是合法的括號序列,那麼(a)也是合法的括號序列2<= isi <=50

output

一乙個數字,代表小特所寫的括號序列所代表的禮物的價值

sample input

(()(()))

sample output

6**:

#include#include#include#include#includeusing namespace std;

stacks;

char a[55];

int main()

else if(a[i]==')')

}} printf("%d\n",sum);

} return 0;

}

c語言棧實現括號匹配

在文字處理軟體或編譯程式設計時,常常需要檢查乙個字串或乙個表示式中的括號是否 相匹配?匹配思想 從左至右掃瞄乙個字串 或表示式 則每個右括號將與最近遇到的那個左括 號相匹配。則可以在從左至右掃瞄過程中把所遇到的左括號存放到堆疊中。每當遇到乙個 右括號時,就將它與棧頂的左括號 如果存在 相匹配,同時從...

括號匹配 棧 c

問題描述 假設乙個算術表示式中可以包含三種括號 圓括號 方括號 及花括號 且這三種括號可以任意次序巢狀。編寫演算法判斷給定表示式中所含括號是否配對出現。解答 假設表示式已存入字元陣列a n 中,具體演算法如下 include using namespace std char s 99 棧儲存 int...

括號匹配 棧 C

描述 假設表示式中只包含三種括號 圓括號 方括號和花括號,它們可相互巢狀,如 或 等均為正確的格式,而 或均為不正確的格式.輸入一串括號 如果輸入的右括號多餘,輸出 extra right brackets 如果輸入的左括號多餘,輸出 extra left brackets 如果輸入的括號不匹配,輸...