这个这么做
题目描述:小 X 最近制作了一个名为一维泡泡龙的游戏,为了简化问题,我们定义游戏进行在一
个长度为 n 的序列中,在初始状态下,对于序列中的每个方格都存在一个有颜色的小球,
有可能为 1(表示红色),2(表示蓝色)或者 3(表示绿色),每当有连续的三个方格中
的小球颜色相同时,这三个方格中的小球会被消去并且小 X 获得 1 积分。注意,消去事件
并不影响其他格子内的小球。
现在给定序列的初始状态,小 X 想知道他一共能获得多少分。
输入:
第一行两个整数 n,表示序列的长度。
第二行 n 个用空格隔开的整数 ai,表示序列中每个格子小球的颜色。
输出:
一行一个整数,表示小 X 最后的得分。
样例输入
10
1 2 2 2 1 3 3 3 1 1
样例输出
2
提示:
【样例解释】
2 2 2 获得 1 分,3 3 3 获得一分,小 X 一共获得 2 分。
【数据范围及约定】
对于 100%的数据,1≤n≤106,1≤ai≤3 可以使用一个变量count来记录小X的得分,初始值为0。然后遍历序列,检查每三个连续的方格是否颜色相同,如果是则count加1。最后输出count的值就是小X的得分。
具体实现的代码如下:
n = int(input("请输入序列的长度: "))
balls = list(map(int, input("请输入每个格子小球的颜色: ").split()))
count = 0
for i in range(n-2):
if balls == balls == balls:
count += 1
print("小X最后的得分是:", count)
这里使用了一个for循环来遍历序列。在每次循环中,判断当前方格以及其后两个方格的颜色是否相同,如果相同则count加1。最后输出得分即可。
希望能帮到你!如果有更多问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 #include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> balls(n);
for(int i = 0; i < n; i++) {
cin >> balls;
}
int score = 0;
for(int i = 0; i <= n - 3;) {
if(balls == balls && balls == balls) {
score++;// 找到连续三个颜色相同的小球,增加分数
i += 3;// 跳过这三个已经计算过的小球
} else {
i++;// 继续检查下一个小球
}
}
cout << score << endl;// 输出最后的得分
return 0;
}
页:
[1]