AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3806. 最长连续手牌

中等通过率 71% · 提交 371 · 通过 263
回溯DFS枚举模拟

小慕正在设计一款单人卡牌游戏,每张卡牌包含颜色和数字两个属性。颜色有红、黄、蓝、绿四种,数字为0到9中的一个。 游戏开始时,小慕从中选出一张卡牌打出。之后,只要他手中有与上一次打出的卡牌颜色相同或数字相同的卡牌,他就可以继续打出这张牌,直到手牌全部打完,或者没有符合条件的卡牌可以继续打出。 现在给定小慕的一副手牌,请你帮他找到,使得他能打出的卡牌数量最多。

提示:带虚线的词点一下有通俗解释。

输入描述

输入为两行,第一行是每张手牌的数字,数字由空格分隔,第二张为对应的每张手牌的颜色, 用r y b g这4个字母分别代表4种颜色,字母也由空格分隔。手牌数量不超过10。

输出描述

输出一个数字,即最多能打出的手牌的数量。

示例

示例 1

输入

1 4 3 4 5
r y b b r

输出

3

说明:如果打出1r,那么下面只能再打出5r,共打出两张牌,而按照4y-4b-3b的顺序则可以打出三张牌,故输出3

示例 2

输入

1 2 3 4
r y b g

输出

1

说明:没有能够连续出牌的组合,只能在开始时打出一张手牌,故输出1

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
示例:1 4 3 4 5 / r y b b r 1 r 4 y 3 b 4 b 5 r 最优出牌顺序:4y → 4b → 3b 4 y 4 b 3 b 相同数字(4)或相同颜色(b)可连续出牌,共3张 其他顺序最多只能出2张
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「最长连续手牌」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。