資料結構 棧與佇列

2022-12-09 21:27:02 字數 2956 閱讀 2586

3311:請判斷下列表示式是否正確。

輸入乙個表示式,表示式中包括:字母,數字,括號以及符號+、—、*、/。判斷表達中各括號的位置是否遵循以下規則:

(1) 各種括號左右數量相同。

(2) 各種括號只能並列和巢狀,不能交差。

輸入:只有一行,為乙個長度小於255的表示式。

輸出:一行。如果表示式中各括號互相匹配,則輸出「yes」。否則輸出「no」和第乙個出錯位,中間用乙個空格格開。

樣例一:輸入:()

輸出:yes

樣例二:輸入:)

輸出:no 3

樣例三:輸入:{}(

輸出:no 3

3312:在上例中,除滿足上例所要求條件外,還必須滿足以下條件:

(1)遵循數學中括號巢狀原則,最內為小括號、中間為中括號、最外為大括號。

3313:在3312的基本上,還需判斷表示式中字母、數字以及符號是否符合數學表示式的原則。

3314:輸入一表示式,判斷表示式是否正確,如果正確,請輸出表示式的值,否則,輸出「error」並輸出表示式第乙個出錯位。

樣例一:輸入:3++(5-2)a

輸出:43+3a

樣例二:輸入:3+a(5*(10-4/2))+(5-2)a

輸出:error 4

3315:輸入一表示式,請輸出表示式的值。結果保留小數點三位。

樣例一:輸入:3++(5-2)

輸出:46.000

3316:合併石子

小ray在河邊玩耍,無意中發現一些很漂亮的石子堆,於是他決定把這些石子搬回家。河灘上一共有n(1≤n ≤ 30000)堆石子,每次小ray合併兩個石子數最少的兩堆石子成為一堆。經過n-1次合併操作以後,只剩下一堆石子,然後小ray就將這一堆石子搬回家。

每合併兩堆石子的時候,小ray消耗的體力是兩堆石子的數量之和。請你算一算,小ray合併所有石子堆消耗的體力是多少呢?

樣例輸入:13 5 48 21 18 32

輸出:274

} 3317:3317:倉庫管理

小a新當上了倉庫管理員,每個月月底,他都需要計算倉庫庫存貨值多少錢,以及本月毛利多少。你能幫他編乙個程式計算機嗎?

由於倉庫中每批進貨的**都不一定一樣,賣出的**也不一定一樣,為了保證倉庫良好執行,保證先進的貨先賣出。

輸入:第一行三個整數k1,k2,k3,中間用空格格開,其中k1表示上月庫存貨品數,k2表示本月進貨數,k3表示本月出貨數。

接下來k1行,每行三個整數,分別表示庫存數編號,存貨數量,以及存貨單位價,接下來k2行,每行三個整數,分別表示進貨編號,進貨數量,以及進貨單位價;接下來k3行,每行三個整數,分別表示出貨編號,出貨數量,以及出貨單位價

輸出:兩行,每行乙個整數,第一行為存貨總價值

第二行為本月毛利

例:輸入: 3 1 1

1 20 5

2 8 12

3 13 20

2 20 15

2 18 18

輸出: 510

78 3318:程式設計對乙個只含有大小寫英文本母、逗號、單引號、問號及空中的句子(測試句子由鍵盤輸入,句子以「.」結束,其長度不超過200個字元)分別進行如下處理:

(1) 把所有的大寫字母轉換成小寫字母;

(2) 去掉多餘的空格(只保留乙個);

(3) 對連續的字母(不包括標點符號和空格)要進行壓縮,壓縮的辦法是先存入該字母,再在它之後存入一數字表示它重複個數(連續字母不會超過9個),例如hhhhh轉換成h5;

3319:小s終於了自己的電子郵箱!她決定寫e-mail告訴自己所有的好朋友。

郵件很快就寫好了,可是……小s覺得這封郵件第行長度並不一致,很不好看。於是,她想請你幫忙給她的電子郵件重新排版。使得排版後,整段文字中每行的長度都等於給定的寬度(不包括最後一行)。

為了使整段文字中每一行的長度都相同,我們可以在單詞之間加入一些空格。看下面一段話(第一行的星號表示應有的寬度);

there is an electric cooker

in the kichen.

如果直接在單詞之間加入空格,我們可以得到:

there is an electric cooker

in the kitchen.

這樣排版雖然整齊了,但看起來依然不很美觀,如果我們將第一行的「cooker」調到第二行再加入一些空格,就可以得到下面的效果,比第一種方案要美觀一些

there is an electric

cooker in the kitchen.

為了量化表示乙個排版效果的好壞,我們對於單詞間的間隙定義乙個權值b,乙個含有t個空格的間隙的權值b就等於(t-1)2。對一種排版方案的總評價就是這篇文章中所有間隙的權值之和,我們不妨認為,總評價的數值越低,這種排版方案越美觀。

上面的例子中,第一種排版方案的總評價為1+62+72=86,第二種排版方案的總評價為22+32+32+22+22+22=34.

在你給出的排版方案中,每一行都應該是由單詞開關和結尾的。也就是說每一行的開關和結尾都不能出現空格。一般情況下,每一行的長度都應該等於給定的寬度。除了下面這種特殊的情況。

某一行只含有乙個單詞,而這個單詞的長度又不到給定的寬度。這時,該單詞應該出現在這一行的開頭,並且結尾沒有空格。我們將忽略它與下乙個單詞之間的空隙,但對於每乙個這種情況,將給總評價加上500。

任務:給出一段文字,通過在單詞間加入空格,使得每行的長度都達到已知寬度。並且要求得到的排版方案總價盡量低。

輸入:第一行為乙個整數w(1≤w≤80),表示指定的寬度。

第二行至第n行,為整段文字,單詞會被回車和空格格開。(單詞由asc ii 碼在33~126之間的字元組成)輸入保證,每個單詞的長度都不會超過w,且所有單詞的總長度不會超過10000。

輸出:第一行為一排星號,w個星號表示寬度

第二行至n1行,為排版後的文字。如果有多個方案,對於兩個總評價相同的方案,找出它們之間第一處不同的空隙,輸出間隙最小的乙個方案。

資料結構實驗棧和佇列

實驗二第三章棧和佇列 一 棧 實驗原始碼 include include include define stack init size 100 define stackincrement 10 typedef int selemtype typedef int status typedef stru...

資料結構棧和佇列基本操作

實驗二棧和佇列 棧的順尋儲存操作 include stdio.h include stdlib.h define stack init size 100 define stackincrement 10 typedef struct sqstack void initstack sqstack s ...

《資料結構》習題3棧和佇列

1.乙個棧的入棧序列a,b,c,d,e,則棧的不可能的輸出序列是 c a.edcba b.decba c.dceab d.abcde 2.若已知乙個棧的入棧序列是1,2,3,n,其輸出序列為p1,p2,p3,pn,若p1 n,則pi為 c a.i b.n i c.n i 1 d.不確定 3.棧結構通...