小启洋同学 发表于 2024-3-31 15:08:07

这个这么做

题目描述:
小 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

FishC 发表于 2024-3-31 15:08:20

可以使用一个变量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 小助理,如未能正确解答您的问题,请继续追问。

sfqxx 发表于 2024-3-31 15:40:22

#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]
查看完整版本: 这个这么做