算法谜题2,手套选择

题面描述

在抽屉里有20只手套。其中,5双黑手套,3双棕色手套和2双灰手套。你只能在黑暗中挑手套,并且只能将手套挑出之后才能检查颜色。最少要挑多少次才能满足以下条件
a> 至少挑出一双颜色匹配的手套
b> 所有颜色的手套都至少挑出一双匹配的。


分析

总计有5 * 5 * 3 * 3 * 2 * 2 =900种状态,单向图,每个顶点最多会与6个其他顶点相连。遍历图可以找到所有解,取最长路径。

但是否一定要这样穷举呢, 如果是由人类来计算,在反向最优的选择下可以将问题的描述转换为以下形式,然后在其结果的基础上+ 1。

在满足以下条件的前提下,最多可以挑多少次:
a> 不能挑出任何一双颜色匹配的手套。 20 / 2 + 1 = 11
b> 至少有一种颜色的手套凑不齐一双。 20 - 2 + 1 = 19

实现

每一次都遍历6种选择,找一个满足条件的挑选方式,直到不能再挑为止。

class Program
{static void Main(string[] args){//a:var count = Function((state) => !(state.HasBlackPair() || state.HasBlownPair() || state.HasGreyPair()));Console.WriteLine($"最少要挑{count}次才能至少挑出一双颜色匹配的手套");//b:var a = Function((state) => !state.HasBlackPair());var b = Function((state) => !state.HasBlownPair());var c = Function((state) => !state.HasGreyPair());Console.WriteLine($"最少要挑{Math.Max(Math.Max(a,b),c)}次才能所有颜色的手套都至少挑出一双匹配的");Console.ReadKey();}private static int Function(Func<State, bool> predicate){int sum = 0;var state = new State();while (true){if (state.TryAddOne(predicate)){sum++;}else{break;}}return sum + 1;}
}public class State
{private int[] Data = new int[6];private int[] Max = new int[] { 5, 5, 3, 3, 2, 2 };public bool TryAddOne(Func<State,bool> predicate){for (int i = 0; i < 6; i++){if(Data[i] < Max[i]){Data[i]++;if (predicate(this)){return true;}else{Data[i]--;}}}return false;}public bool HasBlackPair(){return Data[0] > 0 && Data[1] > 0;}public bool HasBlownPair(){return Data[2] > 0 && Data[3] > 0;}public bool HasGreyPair(){return Data[4] > 0 && Data[5] > 0;}
}

526823-20180605162220670-581463949.png

转载于:https://www.cnblogs.com/wj033/p/9131528.html

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

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

相关文章

虚拟现实数据手套汇总一览

1.Glovenone Glovenone 具有独特的触觉反馈功能&#xff0c;并且可以兼容多款虚拟现实头盔&#xff0c;通过振动模拟真实的触摸体验&#xff0c;可以模拟出物品的形状&#xff0c;重量&#xff0c;和冲击时产生的力量。比如用它模拟弹钢琴的话&#xff0c;可以感…

OpenCV实现手套表面缺陷检测

文章目录 前言一、安装所需的包二、实现源码解析1.引入库2.代码主干 总结 前言 PVC手套是一款以聚氯乙烯为主原料的手套产品&#xff0c;具有防静电的性能。在许多行业内都会用到&#xff0c;例如电子制造业、药品制造业、化工业、农业等等&#xff0c;运用非常广泛。在PVC手套…

多交互智能手套Miiglove

Miiglove&#xff0c;没听过吧&#xff1f; 成立至今&#xff0c;一直低调研发&#xff0c;没咋宣传&#xff0c; 三月底才在法国的拉瓦勒VR展会上露了个脸儿。 『努力做最贴近市场需求的产品』 Miiglove虽然今年才公开宣传&#xff0c; 但是定向合作伙伴却已经超过150家。 合作…

2022年10月16日 8点 程序爱生活 纳指和恒指反弹的概率还在,但是反弹做空为主。

确定市场形态的敏感因子 - 灰度基金&#xff0c;继续扩大折价 结论&#xff1a;大B继续保持高折价&#xff0c;市场还是继续看弱。 行情核心源头 : 纳指主连日线&#xff0c;继续有概率反弹后再往下 从程序模拟趋势来看&#xff0c; 趋势指标出现反弹失败的情况, 这个正常, 但…

港联证券|人民币大消息!美科技股涨嗨,微软一夜暴增超万亿!

当地时间26日&#xff0c;美股三大股指收盘涨跌纷歧。到收盘&#xff0c;道指报33301.87点&#xff0c;下跌0.68%&#xff1b;标普500指数报4055.99点&#xff0c;下跌0.38%&#xff1b;纳指报11854.35点&#xff0c;上涨0.47%。 榜首共和银行大跌29.75%&#xff0c;该股昨天大…

微软市值一夜飙涨 5450 亿

大家好&#xff01;我是韩老师。 美东时间 2 月 7 日周二&#xff08;北京时间 2 月 8 日周三&#xff09;&#xff0c;微软收涨逾 4%&#xff0c;一夜市值飙涨超 800 亿美元&#xff08;约 5450 亿元人民币&#xff09;&#xff0c;报 267.56 美元/股&#xff0c;最新总市值 1…

微软宣布 Windows 11 开始大范围推送

微软宣布 Windows 11 现已开始向更多符合条件的 Windows 10 电脑推送。 微软表示&#xff1a;无论是推广经验还是用户反馈&#xff0c;都是积极的。因此我们计划扩大 Windows 11 的推送范围&#xff0c;这比我们之前预期的要快。 如果您有符合升级条件的 Windows 10 电脑&…

测试ip地址和端口号是否被封

国内检测 端口扫描 - 站长工具 使用方法 国外检测 Open Port Check Tool - Test Port Forwarding on Your Router 使用方法 该网址国内国外一起查询 port.ping.pe 使用方法 ip:port的格式输入ip地址和端口号&#xff0c;下面有例子 测试分为境外和大陆两部分。结果包括成…

实现动态封禁 IP就是这么简单~

开发者&#xff08;KaiFaX&#xff09; 面向全栈工程师的开发者 专注于前端、Java/Python/Go/PHP的技术社区 原文&#xff1a;https://segmentfault.com/a/1190000018267201 为了封禁某些爬虫或者恶意用户对服务器的请求&#xff0c;我们需要建立一个动态的 IP 黑名单。对于黑名…

Ngnix 实现IP封禁以及自动封禁IP

1.在ngnix的conf目录下创建一个blockip.conf文件 2.里面放需要封禁的IP&#xff0c;格式如下 deny 1.2.3.4; 3.在ngnix的HTTP的配置中添加如下内容 include blockips.conf;4.重启 ngnix /usr/local/nginx/sbin/nginx -s reload5.然后你就会看到IP被封禁了&#xff0c;你会…

Ngnix IP封禁以及实现自动封禁IP

1.在ngnix的conf目录下创建一个blockip.conf文件 2.里面放需要封禁的IP&#xff0c;格式如下 deny 1.2.3.4;3.在ngnix的HTTP的配置中添加如下内容 include blockips.conf;4.重启 ngnix /usr/local/nginx/sbin/nginx -s reload然后你就会看到IP被封禁了&#xff0c;你会喜提…

研究生论文阅读总结

UWB与协同定位 UWBUltra-Wideband Aided Fast Localization and Mapping System概要uwb权值设计平滑项权值设计 Integrated UWB-Vision Approach for Autonomous Docking of UAVs in GPS-denied Environments概要加定高雷达的改变 Robust Target-relative Localization with Ul…

考研复试-密码学(对比总结版本)

密码学 对称加密算法非对称加密算法&#xff08;公开密钥算法&#xff09;哈希算法&#xff08;单向散列算法、杂凑函数&#xff09;其他 各种算法介绍就不总结了&#xff0c;主要列举一些基本要点&#xff0c;方便对比记忆 对称加密算法 DES 密文长度&#xff08;每组&#x…

深大计算机复试,20考研深大成功,分享考研复试考研经验!自我检讨

上次复试的时候&#xff0c;鸽了一天&#xff0c;很抱歉&#xff0c;后面说了会写一期的复试体会&#xff0c;现在就补上&#xff0c;其实说实话&#xff0c;我这次考研也是几番跌宕起伏&#xff0c;小心脏有点受不住了。 复试内容&#xff1a; 首先先说考试的内容吧&#xff0…

1. 考研常见问题总结 从择校到复试

文章目录 前言 1. 考研流程&#xff1f; 2. 如何选择学校&#xff1f; 3. 如何选择专业&#xff1f; 4. 选择学校还是选择专业&#xff1f; 5. 如何查专业资料&#xff1f;考试科目等。 6. 如何复习&#xff0c;准备初试&#xff1f; 7. 复试流程&#xff1f; 8…

考研复试问题汇总

计算机考研复试问题总结 文章目录 计算机考研复试问题总结一 . 计算机网络1.TCP连接建立&#xff08;三次握手&#xff09;2.TCP连接释放&#xff08;四次挥手&#xff09;3.计算机网络的主要功能&#xff1f;4.谈下你对五层网络协议体系结构的理解&#xff1f;七层协议理解 5.…

即便考分很好也不予录取的研究生复试红线,都是原则性问题

在浙大研究生招生录取政策文件中有这么一句话&#xff1a;坚持“按需招生、全面衡量、择优录取、宁缺毋滥”的原则&#xff0c;以提高人才选拔质量为核心&#xff0c;在确保安全性、公平性和科学性的基础上&#xff0c;做到统筹兼顾、精准施策、严格管理。字字体现出研究生招生…

研究生期间论文发表经验总结

文章目录 前言&#xff08;一志愿未录取&#xff0c;走的调剂&#xff09;一、研究生论文及成果1.中科院二区SCI英文论文2.中科院三区SCI英文论文3.北大核心期刊论文 二、经验分享1.第一篇SCI论文&#xff08;二区英文论文&#xff09;第一次返回大修&#xff1a;第二次返回大修…

详细分析DaSiamRPN,快速把握论文要点,不会请砍我!

文章目录 整体把握训练集修改的创新点出发点修改 论文代码&#xff1a;https://github.com/foolwood/DaSiamRPN 论文题目&#xff1a;Distractor-aware Siamese Networks for Visual Object Tracking 整体把握 本篇论文赢得了vot2018短时跟踪比赛的冠军&#xff0c;长时跟踪比…

应用统计432考研复试提问总结精简版【二】

一、自由度是什么&#xff1f; 定义&#xff1a;构成样本统计量的独立的样本观测值的数目解释&#xff1a;从书中所给的平均数的角度进行 二、讲一下对t检验的理解&#xff1f; t检验适用于两个变量均数间的差异检验。同时用t检验的前提下&#xff1a;正态性和方差齐性。t检…