Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
代码帖错了,是这个!In Reply To:难道贪心法不对 ? Posted by:sky_handsome at 2007-05-10 23:16:14 #include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; bool* match = new bool[s.length()]; int i, j; for(i = 0; i < s.length(); ++i) match[i] = false; int sleft, sright, bleft, bright; sleft = sright = bleft = bright = 0; string result; for(i = 0; i < s.length(); ++i) { if(s[i] == '(') { sleft = 1; sright = 0; for(j = i+1; j < s.length(); ++j) { if(s[j] == '(') ++sleft; else if(s[j] == ')') ++sright; if(sleft == sright) break; } if(sleft == sright) { result += '('; match[j] = true; } else result += "()"; } else if(s[i] == ')') { if(match[i]) result += ')'; else result += "()"; } else { result += s[i]; } } s = result; result = ""; delete[] match; match = new bool[s.length()]; for(i = 0; i < s.length(); ++i) match[i] = false; for(i = 0; i < s.length(); ++i) { if(s[i] == '[') { sleft = 0; sright = 0; bleft = 1; bright = 0; for(j = i+1; j < s.length(); ++j) { if(s[j] == '[') { ++bleft; } else if(s[j] == ']') { ++bright; } else if(s[j] == '(') ++sleft; else if(s[j] == ')') ++sright; if(bleft == bright) break; } if(bleft == bright && sleft == sright) { result += '['; match[j] = true; } else result += "[]"; } else if(s[i] == ']') { if(match[i]) result += ']'; else result += "[]"; } else { result += s[i]; } } delete[] match; cout << result << endl; return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator