| ||||||||||
| 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 | |||||||||
C++会编译错误,G++秒过#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
void print(string s){
int len = s.length();
for(int i = 0; i < len; i++) printf("%c ", s[i]);
printf("$\n");
}
bool isLast(string s){
int len = s.length();
for(int i = 0; i < len/2; i++){
if(s[i] == ')') return 0;
}
return 1;
}
int findBPos(string s){
int kh = 1, len = s.length();
for(int i = 1; i < len; i++){
if(s[i] == '(') kh++;
else{
kh--;
if(kh == 0) return i+1;
}
}
return len;
}
string kuohao(int n){
string s = "";
for(int i = 0; i < n; i++) s += "()";
return s;
}
string next(string s){
if(!s.length()) return "()";
int bpos = findBPos(s);
string B = s.substr(bpos), khA = s.substr(0, bpos);
string A = khA.substr(1, khA.length()-2);
if(!isLast(B)){
return khA + next(B);
}
else if(!isLast(A)){
return "(" + next(A) + ")" + kuohao((B.length()/2));
}
else if(B.length()){
return "(" + kuohao(A.length()/2+1) + ")" + kuohao(B.length()/2-1);
}
else{
return kuohao(s.length()/2+1);
}
}
int main() {
int T;
cin >> T;
for(int i = 0; i < T; i++){
//cout << 1 << endl;
char c;
char str[80] = {'\0'};
int len = 0;
while(1){
cin >> c;
if(c == '$') break;
str[len] = c;
len++;
}
string DO(str);
print(next(DO));
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator