鱼C论坛

 找回密码
 立即注册
查看: 137|回复: 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
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;

  4. int main() {
  5.     int n;
  6.     cin >> n;
  7.     vector<int> balls(n);
  8.     for(int i = 0; i < n; i++) {
  9.         cin >> balls[i];
  10.     }

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

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

使用道具 举报

发表于 2024-3-31 15:08:20 | 显示全部楼层
可以使用一个变量count来记录小X的得分,初始值为0。然后遍历序列,检查每三个连续的方格是否颜色相同,如果是则count加1。最后输出count的值就是小X的得分。

具体实现的代码如下:

  1. n = int(input("请输入序列的长度: "))
  2. balls = list(map(int, input("请输入每个格子小球的颜色: ").split()))

  3. count = 0
  4. for i in range(n-2):
  5.     if balls[i] == balls[i+1] == balls[i+2]:
  6.         count += 1

  7. print("小X最后的得分是:", count)
复制代码


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

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

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

使用道具 举报

发表于 2024-3-31 15:40:22 | 显示全部楼层    本楼为最佳答案   
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;

  4. int main() {
  5.     int n;
  6.     cin >> n;
  7.     vector<int> balls(n);
  8.     for(int i = 0; i < n; i++) {
  9.         cin >> balls[i];
  10.     }

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 14:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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