鱼C论坛

 找回密码
 立即注册
查看: 460|回复: 2

[已解决]这个这么做

[复制链接]
发表于 2024-3-31 15:08:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述:
小 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
最佳答案
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[i];
    }

    int score = 0;
    for(int i = 0; i <= n - 3;) {
        if(balls[i] == balls[i+1] && balls[i+1] == balls[i+2]) {
            score++;  // 找到连续三个颜色相同的小球,增加分数
            i += 3;  // 跳过这三个已经计算过的小球
        } else {
            i++;  // 继续检查下一个小球
        }
    }

    cout << score << endl;  // 输出最后的得分
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[i] == balls[i+1] == balls[i+2]:
        count += 1

print("小X最后的得分是:", count)

这里使用了一个for循环来遍历序列。在每次循环中,判断当前方格以及其后两个方格的颜色是否相同,如果相同则count加1。最后输出得分即可。

希望能帮到你!如果有更多问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[i];
    }

    int score = 0;
    for(int i = 0; i <= n - 3;) {
        if(balls[i] == balls[i+1] && balls[i+1] == balls[i+2]) {
            score++;  // 找到连续三个颜色相同的小球,增加分数
            i += 3;  // 跳过这三个已经计算过的小球
        } else {
            i++;  // 继续检查下一个小球
        }
    }

    cout << score << endl;  // 输出最后的得分
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 19:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表