算法题:最大出牌数量

最近遇到的一个算法题,在这里记录一下找到的答案。

完整题目:

手里给一副手牌,数字从0-9,有r(红色),g(绿色),b(蓝色),y(黄色)四种颜色,出牌规则为每次打出的牌必须跟上一张的数字或者颜色相同,否则不能连续出牌。

例如,手中有红色3,那么下次出牌可以出任意花色的3,或任意数字的红色牌,直至手中所有牌与上次出牌花色和数字都不匹配为止。

求可打出牌的最大数量。

输入第一行为手中牌面数字n (1<=n<=9),如

[1, 4, 3, 4, 5, 4]

输入第二行为手中第一行输入的牌面所对应的花色(r,g,b,y四种颜色表示),如

['r', 'y', 'b', 'b', 'r', 'y']

第一行与第二行输入长度相等,且位置一一对应,手牌数量最大为10张,输出最大出牌数量。

示例说明:
如果打(1, r)-> (5, r),那么能打两张。
如果打(4, y) -> (4, y)-> (4, b) ->(3, b),那么能打四张。

# 回溯
def maxPoke(nums, colors):len_ = len(nums)# 记录用过的牌vis = [False] * len_def dfs(num, color):max_ = 0# 枚举获取每张牌作为第1 ~ len次出时可以打出的最大数量for i in range(len_):if vis[i]:continuen, c = nums[i], colors[i]# -1表示当前正在寻找第一张牌,任何花色和数字都可以if n == num or c == color or num == -1:vis[i] = Truemax_ = max(1 + dfs(n, c), max_)vis[i] = Falsereturn max_return dfs(-1, -1)print(maxPoke(nums=[1, 4, 3, 4, 5, 4], colors=['r', 'y', 'b', 'b', 'r', 'y']))  # 4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一百九十二、Flume——Flume数据流监控工具Ganglia单机版安装

一、目的 在安装好Flume之后&#xff0c;需要用一个工具可以对Flume数据传输进行实时监控&#xff0c;这就是Ganglia 二、Ganglia介绍 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 &#xff08;一&#xff09;第一部分——gmond gmond&#xff08;Ganglia Monitoring Da…

阶乘(Python)

一、定义 整数的阶乘&#xff08;英语&#xff1a;factorial&#xff09;是所有小于及等于该数的正整数的积&#xff0c;0的阶乘为1。即&#xff1a;n!123...n 二、方法说明 python求整数n阶乘的方法&#xff1a; 1、使用math模块factorial(n)来计算n的阶乘 2、for循环语句…

JAVA毕业设计102—基于Java+Springboot+vue的个人理财管理系统(源码+数据库)

基于JavaSpringbootvue的个人理财管理系统(源码数据库) 一、系统介绍 本系统前后端分离 管理员功能&#xff1a; 登录、注册、添加账单、导出账单、统计分析、个人信息修改、消费对比 二、所用技术 后端技术栈&#xff1a; SpringbootSpringMvcmybatismysql 前端技术栈…

[MoeCTF 2023]——Web方向详细Write up、Re、Misc、Crypto部分Writeup

签到 hello CTFer 将url地址复制然后打开即可 得到flag Web http 听说这个http里还有个什么东西叫饼干&#xff0c;也不知道是不是吃的 踩坑了&#xff0c;这里用连接器。。。 开启题目环境 GET方式请求&#xff0c;然后把各种请求头往里加 GET ?UwUuHeader&#xff1a; …

ConcurrentHashMap底层具体实现知道吗?实现原理是什么

从这三个方面来回答&#xff1a; ConcurrentHashMap 的整体架构 ConcurrentHashMap 的基本功能 ConcurrentHashMap 在性能方面的优化 ConcurrentHashMap 的整体架构 这个是 ConcurrentHashMap 在 JDK1.8 中的存储结构&#xff0c;它是由数组、单向链表、红黑树组成. 当我们初始…

mysql的锁介绍

从共享性上来说&#xff0c;mysql的数据库锁分为&#xff1a; 共享锁(读锁)&#xff1a;lock in share mode&#xff1b;一个事务获取了读锁之后&#xff0c;不排斥其他事务读数据&#xff0c;但排斥其他事务增删改。 排它锁(写锁)&#xff1a;for update&#xff1b;一个事务获…

【ROS 2 基础-常用工具】-7 Rviz仿真机器人

所有内容请查看&#xff1a;博客学习目录_Howe_xixi的博客-CSDN博客

读书笔记——富兰克林自传

富兰克林自传 1.我从这件事得到一个启发&#xff0c;只要人们专心工作&#xff0c;就会活得非常快乐。在工作的日子里&#xff0c;他们往往温顺和气&#xff0c;心情愉快。白天痛痛快快地干活&#xff0c;晚上开开心心地吃喝。但是&#xff0c;一旦空闲无事&#xff0c;他们就…

Java的反射(reflection)机制的简单使用

目录 一、定义 二、用途 三、反射基本信息 四、反射相关的类 五、反射示例 六、反射的优点和缺点 一、定义 Java的反射机制是运行时的状态&#xff0c;可以通过反射来调用类里面的属性和方法&#xff0c;私有的属性和方法也可以调用&#xff0c;也可以对它们进行修改。 二…

常见面试题-Netty专栏(一)

typora-copy-images-to: imgs Netty 是什么呢&#xff1f;Netty 用于做什么呢&#xff1f; 答&#xff1a; Netty 是一个 NIO 客户服务端框架&#xff0c;可以快速开发网络应用程序&#xff0c;如协议服务端和客户端&#xff0c;极大简化了网络编程&#xff0c;如 TCP 和 UDP …

LVS+keepalived高可用集群

1、定义 keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用&#xff0c;keepalived实现的是调度器的高可用&#xff0c;但keepalived不只为lvs集群服务的&#xff0c;也可以做其他代理服务器的高可用&#xff0c;比如nginxkeepalived也可实现高可用&#xff08;重…

多模态笔记

Transformer 对文本输入进行tokenizer时&#xff0c;调用的接口batch_encode_plus&#xff0c;过程大致是这样的(参考&#xff1a;tokenizer用法) #这里以bert模型为例&#xff0c;使用上述提到的函数 from transformers import BertTokenizer tokenizer BertTokenizer.from…

spring tx:advice事务配置—— tx:advice中不允许出现属性 ‘transaction-manager‘

今天在配置java事务管理时出现了一些问题。 提示&#xff1a;只有这几个属性 经过查询资料发现是bean的配置少了一些。 可以在xml文件顶部添加&#xff1a; xmlns:tx"http://www.springframework.org/schema/tx" 下面也提供一份bean文件配置的模板&#xff1a; &a…

下列软件包有未满足的依赖关系: libqt5svg5-dev : 依赖: libqt5svg5 (= 5.12.8-0ubuntu1) 但是它将不会被安装

有一些软件包无法被安装。如果您用的是 unstable 发行版&#xff0c;这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录移出。 下列信息可能会对解决问题有所帮助&#xff1a; 下列软件包有未满足…

Java入门讲解(1)---让你瞬间明白如何安装jdk

博主有话说&#xff1a;学习这个东西一定要持之以恒&#xff01;&#xff01;&#xff01;博主之前因为点事情半个月没学习&#xff0c;重新来过时&#xff0c;发现自己错过好多知识&#xff0c;正在一点一点往回补&#xff0c;博客也会陆续开始更新&#xff0c;希望大家多多支…

HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求

#鸿蒙生态千帆起#随着移动互联网的逐步成熟&#xff0c;用户的需求越来越细化。鸿蒙生态为开发者提供的HarmonyOS SDK开放能力&#xff0c;高效赋能美团外卖等合作伙伴实现更具象、个性化的开发诉求&#xff0c;给用户提供更丰富便捷的体验。 HarmonyOS SDK&#xff0c;赋能开发…

pb:数据处理窗口CloseQuery事件编程、如何在窗口之间传递结构

1、数据处理窗口CloseQuery事件编程 该事件下的脚本流程是首先判断数据是否修改过,如果修改过,则让用户选择是否保存,用户确认保存则保存,不保存则退回事务然后关闭窗口。保存数据时,保存成功则直接关闭窗口,保存失败则让用户确认是否关闭窗口,用户确认要关闭则关闭窗口…

【AI视野·今日CV 计算机视觉论文速览 第272期】Fri, 20 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 20 Oct 2023 Totally 62 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Putting the Object Back into Video Object Segmentation Authors Ho Kei Cheng, Seoung Wug Oh, Brian Price, Joon Youn…

(二)docker:建立oracle数据库mount startup

这章其实我想试一下startup部分做mount&#xff0c;因为前一章在建完数据库容器后&#xff0c;需要手动创建用户&#xff0c;授权&#xff0c;建表等&#xff0c;好像正好这部分可以放到startup里&#xff0c;在创建容器时直接做好&#xff1b;因为setup部分我实在没想出来能做…

php对接飞书机器人

有同事接到对接飞书机器人任务&#xff0c;开发中遇到响应错误&#xff1a; {"code": 19021,"msg": "sign match fail or timestamp is not within one hour from current time" } 意思应该就是签名错误或者时间戳不在有效范围内等&#xff0c…