練習題 剔除多餘括號

2022-09-19 07:06:08 字數 1292 閱讀 4640

輸入乙個含有括號的四則運算表示式,要求去掉可能含有的多餘的括號,結果要保持原表示式中變數和運算子的相對位置不變,且與原表示式等價

,不要求化簡。另外不考慮

'+' '-'

用作正負號的情況,即輸入表示式不會出現

(+a)

或(-a)

的情形。

第1行:乙個字串表示要整理的表示式

第1行:整理後的結果

copy

(如果複製到控制台無換行,可以先貼上到文字編輯器,再複製)

((a+b)*f)-(i/j)

(a+b)*f-i/j

輸入:1. a+(b+c)-d

2. a+b/(c+d)

3. (a*b)+c/d

4. ((a+b)*f)-(i/j)

輸出:1. a+b+c-d

2. a+b/(c+d)

3. a*b+c/d

4. (a+b)*f-i/j

乙個半小時的青春年華,因此題,付諸東流/(ㄒoㄒ)/~~、

不要說其中的心路歷程,直接說這道題吧

首先,在輸入合法的情況下,括號兩旁一定是運算符號,括號拆不拆取決於括號中等級最小的運算子是否不小於兩邊符號

小心!a-(b-c)之類的不能拆!!

所以,將每個括號中等級最小的符號儲存下來,進行比較後在決定最終是否刪除

不說了,**如下:

#include#include#include#includeusing namespace std;

struct illh[50001];

char a[100001];

int l,g;

int work(int s)

if(a[i]=='+')h[x].mi=min(h[x].mi,1);

if(a[i]=='-')h[x].mi=min(h[x].mi,2);

if(a[i]=='*')h[x].mi=min(h[x].mi,3);

if(a[i]=='/')h[x].mi=min(h[x].mi,4);

}h[x].r=l;

return i;

}void del(int x)

int main()

}for(i=2;i<=g;i++)

if(h[i].no)

a[h[i].l]=a[h[i].r]=0;

for(i=1;i<=l;i++)

if(a[i])

printf("%c",a[i]);

}

python書中練習題 python練習題

1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...

python的練習題 Python練習題

1 使用while迴圈輸入1 2 3 4 5 6 8 9 10 i 0while i 10 i i 1 if i 7 continue print i 結果 e python python python test.py1 2 求1 100的所有數的和 i 0sum 0 while i 100 i 1...

初學程式設計練習題 括號配對問題(Java)

問題描述 現在,有一行括號序列,檢查這行括號是否配對。輸入 第一行輸入乙個數n,表示有n組測試資料,n 0且n 100。後面的n行輸入多組輸入資料,每組輸入資料都是乙個字串s s的長度小於10000,且s不是空串 測試資料組數少於5組。資料保證s中只含有 四種字元 輸出 每組輸入資料的輸出佔一行,如...