我正在尝试http://www.spoj.com/problems/BRCKTS/,我得到了逻辑,但这在输入字符串时出现了分段错误。我认为问题在于在数组中插入字符,无法弄清楚。
int main() {
int t = 10;
int l = 1;
do{
int length_bracket;
char d;
cin>>length_bracket;
vector<char> word;
string output;
for( int i =0; i<length_bracket; i++) {
cin.get(d);
word.push_back(d);
}
int num_operations;
cin>>num_operations;
do{
int n;
cin>>n;
if(n == 0) {
if(word[0] == ')' || word[length_bracket] == '(') {
output = output + "NO" + '\n';
}
else {
int l1 = 0; int l2 = 0;
for(int i=0; i<length_bracket; i++) {
if(word[i] == ')') {
l1 = l1+1;
}
else {
l2 = l2+1;
}
}
if(l1 == l2 && l1 != 0 && l2 != 0 ) {
output = output + "YES" + '\n';
}
else {
output = output + "NO" + '\n';
}
}
}
else {
if(word[n-1] == '(')
word[n-1] = ')';
else
word[n-1] = '(';
}
num_operations--;
}while(num_operations);
cout<<"Test"<<l<<endl;
l++;
cout<<output;
t--;
}while(t);
return 0;
}
最佳答案
仅浏览一下代码,我看到您正在访问word[length_bracket]
,但是word
仅包含length_bracket
字符,因此您应改为检查word[length_bracket-1]
。
关于c++ - 解决Spoj上的BRCKTS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18803212/