【提高】删除多余括号
#include <iostream> using namespace std; string a; int b[280]={0}; int fi(char l){ if(l=='*'){ return 2; }else if(l=='+'){ return 1; }else if(l=='/'){ return 5; }else if(l=='-'){ return 4; }else{ return 0; } } bool x(){ int left=-1,right=-1,in=0,lleft,rright; for(int i=0;i<a.size();i++){ if(a[i]=='('){ left=i; }else if(a[i]==')'){ right=i; break; } } if(left==-1||right==-1){ return false; } lleft=fi(a[left-1]); rright=fi(a[rright+1]); int _min=4; for(int i=left+1;i<right;i++){ if(fi(a[i])>0 && !b[i]){ if(fi(a[i]<_min)){ _min=fi(a[i]); } } b[i]=1; b[i-1]=1; if(i==right-1){ b[i+1]=1; } } a[left]='{'; a[right]='}'; if(_min<lleft){ a[left]='['; a[right]=']'; } cout<<lleft<<" "<<_min<<" "; return true; } int main(){ cin>>a; while(x()){ cout<<a<<endl; } for(int i=0;i<a.size();i++){ if(a[i]=='['||a[i]==']'){ }else if(a[i]=='['){ cout<<'('; }else if(a[i]==']'){ cout<<')'; }else { cout<<a[i]; } } return 0; }