Skip to content

Commit

Permalink
feat: 添加 lab5: zuma 游戏
Browse files Browse the repository at this point in the history
1. 添加链表相关实验
2. 添加双端链表的学习内容
  • Loading branch information
E1PsyCongroo committed Nov 6, 2024
1 parent a285b49 commit b1ecb7a
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 0 deletions.
Binary file added Labs/Solutions/Lab5-Sol.tar.gz
Binary file not shown.
Binary file added Labs/lab5/Lab5.tar.gz
Binary file not shown.
74 changes: 74 additions & 0 deletions Labs/lab5/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# 祖玛

## 开始之前

你可能需要学习双端链表这一数据结构

请阅读同目录下的[doubly_linked_list.md](./doubly_linked_list.md)

## 题意描述

XY最近迷上了一款老游戏——祖玛

游戏的规则很简单,XY每个轮次会发射一枚珠子,任意时刻,如果三枚及以上颜色相同的珠子连续存在,则立刻消除,XY获得消除的珠子价值之和乘以消除连续消除轮数的分数(注意到一次消除可能会引起下一次消除),具体而言,如果这是本轮引发的第K次消除,消除了N枚珠子,第i枚珠子的价值为Vi,则有分数P:

$$
P=\sum_{i=1}^{N} V_i \times K
$$

具体而言,珠子有以下类型和属性:

* 普通珠
* 颜色:单个正整数1、2、3表示三种颜色
* 价值:单个正整数V
* 作用:任意时刻,如果三枚及以上颜色相同的普通珠连续存在,则立刻消除并获得对应的分数
* 放逐珠
* 对当前序列第i个珠子发射时,将其放逐,移除该枚珠子,此行为不属于消除,不会得分且不计入当轮消除轮数(放逐行为可能会间接引发消除)
* 置顶珠
* 对当前序列第i个珠子发射时,将在该珠子之前的序列按顺序移动到尾部,具体而言,若原序列为「1,2...i...n」,得到的新序列为「i,i+1...n,1,2...i-1」

如果任意时刻,场面上没有任何珠子,游戏立刻结束,且当前分数翻倍,数据保证在场面上没有任何珠子时不再给出任何操作。

## 输入格式

第一行给定正整数N表示初始局面中普通珠的数量

接下来N行,没行给出一个正整数C和一个正整数V,以空格分隔,按顺序表示初始局面中普通珠子的颜色和价值分布,数据保证初始局面不存在消除的情况

第N+1行开始每行给出如下输入

每行开头给出正整数K,如果K为0表示输入结束,否则表示对第K个珠子发射

以空格分隔,给出正整数T,如果T为4表示放逐珠,T为5表示置顶珠,否则T为普通珠的颜色(1、2、3)

如果发射的是普通珠,以空格分隔,给出正整数V,表示普通珠的价值

## 输出格式

输出一个正整数ANS,表示XY的最终得分

## 数据范围

1<=N<=1000,1<=C<=3,1<=T<=5,1<=V<=10

## 样例输入

`test`目录下四组.in文件

## 样例输出

`test`目录下四组.out文件

## 注意事项

已提供宝宝巴士填空版本,也可自己白手起家,但请不要在你的代码中声明任何数组

请勿修改代码名称(zuma),若白手起家请依旧命名你的代码文件为zuma.c

运行datamaker可执行文件生成一组随机测试样例:randomcase.in,randomcase.out

```shell
make all # 编译代码
make judge-case # 运行测试样例
make judge-random # 随机生成样例进行测试
```

0 comments on commit b1ecb7a

Please sign in to comment.