要修改这段代码,使得只有当遇到三个相同颜色的小球时才进行消除操作,可以在消除函数 eliminateBalls 中做出以下修改:
void eliminateBalls(string& row) {
vector<char> stack; // 使用栈来进行消除操作
bool eliminated = false;
for (char ball : row) {
if (!stack.empty() && stack.back() == ball) {
// 如果当前小球与栈顶小球颜色相同,则加入栈中
stack.push_back(ball);
}
else {
if (stack.size() >= 2 && stack[stack.size() - 2] == ball) {
// 当前小球与倒数第二个小球颜色相同,表示可以进行消除操作
while (!stack.empty() && stack.back() != ball) {
// 消除所有与当前小球相同颜色的小球
stack.pop_back();
eliminated = true;
}
if (!stack.empty()) {
// 消除当前小球
stack.pop_back();
eliminated = true;
}
}
else {
// 否则,将当前小球加入栈中
stack.push_back(ball);
}
}
}
if (eliminated) {
// 消除操作发生,更新原始字符串
row = string(stack.begin(), stack.end());
}
}
这样修改后,在遇到连续三个相同颜色的小球时才会执行消除操作。
内容由零声教学AI助手提供,问题来源于学员提问




