演算法訓練 刪除多餘括號

2021-08-25 22:01:54 字數 1202 閱讀 4742

/*問題描述

從鍵盤輸入乙個含有括號的四則運算表示式,要求去掉可能含有的多餘的括號,結果要保持原表示式中變數和運算子的相對位置不變,且與原表示式等價,不要求化簡。另外不考慮'+' '-'用作正負號的情況,即輸入表示式不會出現(+a)或(-a)的情形。

輸入格式

表示式字串,長度不超過255, 並且不含空格字元。表示式中的所有變數都是單個小寫的英文本母, 運算子只有加+減-乘*除/等運算符號。

輸出格式

去掉多餘括號後的表示式

樣例輸入

樣例一:

a+(b+c)-d

樣例二:

a+b/(c+d)

樣例三:

(a*b)+c/d

樣例四:

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

樣例輸出

樣例一:

a+b+c-d

樣例二:

a+b/(c+d)

樣例三:

a*b+c/d

樣例四:

(a+b)*f-i/j

*/

#if 1 

#includevoid output( char ) ;

int solve( char , int ) ;

int pd( char , int , int );

int main(void)

int pd( char zf , int left, int right )

if(zf[i] == '+' && leftacount == 1) }}

if( zf[ left - 1 ] == '/')

if(zf[ left - 1 ] != '*' && zf[ left - 1 ] != '/' && zf[ right + 1 ] != '*' && zf[ right + 1 ] != '/')

i = left ;

leftacount = 1;

while(++i < right)

if(zf[i] == '*' && leftacount == 1)

}return 0;

}int solve( char zf , int i )

if( zf[i] == '(')

}i ++ ;

} }void output( char zf )

i ++ ;

}}#endif

藍橋杯 演算法訓練 ALGO 57 刪除多餘括號

演算法訓練 刪除多餘括號 時間限制 1.0s 記憶體限制 512.0mb 問題描述 從鍵盤輸入乙個含有括號的四則運算表示式,要求去掉可能含有的多餘的括號,結果要保持原表示式中變數和運算子的相對位置不變,且與原表示式等價,不要求化簡。另外不考慮 用作正負號的情況,即輸入表示式不會出現 a 或 a 的情...

刪除多餘空格

本演算法經過了一些測試用例的測試 get the length of the string int mylenth char basestr char pstr basestr int lenth 0 while pstr 0 return lenth sumspace 表示要刪除的空格的總個數,也...

刪除系統多餘網絡卡

在電腦的 裝置管理器 中.很多人網絡卡的名稱後面有 2 3 這樣的字樣.如果你的電腦中只有一塊網絡卡.那麼這樣的字樣就說明該網絡卡的驅動程式在你的電腦中至少被安裝過兩次.為什麼會出現這樣的情況呢.這是由於你更改了網絡卡的擴充套件插槽造成的.出於有意或無意目的.你可能會在機箱中把網絡卡從乙個插槽更換到...