简单算法谜题

2手套选择

抽屉里有20只手套,其中5双是黑色的,3双棕色和2双灰色的。你只能在黑暗中挑手套,并且只有将手套挑出之后才能检查其颜色。最少要挑几次才能满足以下条件?

  1. 至少挑出一双颜色相同的手套。
  2. 所有颜色的手套都至少挑选出一双匹配的。

解:(a)由于手套分左右手,所以最坏情况是前十次都为同一只手,第十一次则必定能匹配成功。所以最少为11次。

  1. 同样考虑最坏情况,前十八次拿五双黑色和三双棕色以及同一只手的灰色,则第十九次一定会匹配成功。

3矩形分割

找出所有将一个矩形分成n个直角三角形的方法(n>1)。并且将这种切割的方法归纳成一个算法。


1.当n为2时沿矩形对角线切割可分为两个直角三角形,当n>2时,垂直于对角线的切割每次都会增加一个直角三角形,则n-2刀每次都会增加一个三角形。

解2.若n为偶数,先将矩形切割为n/2个需平行于边线切割n/2-1次,然后将n/2个矩形切割为n个直角三角形。若n为奇数可先将矩形切割为n-1个直角三角形再垂直于斜边切割。

士兵摆渡

25个士兵组成的小分队要渡河,可是河水宽且深,周围也没有桥。他们发现河岸边有一个小船,两个12岁的小男孩正在上面玩耍。船很小,仅能承载两个男孩或一个士兵的重量。士兵应该如何渡河?在你用的算法中,船从一个岸边到另一个岸边要来回共计几次?

解:利用状态图

每个循环可以送一名士兵过去,送25名士兵共需要往返100次。

5行列变换

怎样才能将图中左边的数字阵列变换成右边的样子?要求只能对阵列做行交换和列交换。

解:

不能 根据行交换和列交换的原则,可以看出其实交换之后行的数字是不会有变化的,只会位置改变。根据不变量的方法。

6数数的手指

一个小女孩正在用左手手指数数,从1到1000。她从拇指算作1开始数起,然后,食指为2,中指为3,无名指为4,小指为5接下来调转方向,无名指算作6,中指为7,食指为8,大拇指为9,接下来食指为10,如此反复。问如果按照这种方式数下去,最后结束时是停在哪个手指上?

解:

由于给定算法可知,除前五个数字之外之后的数字八个为一次循环,八个分别为奇数情况下的无 中 食 拇和偶数情况下的食 中 无 小。1000-5=995 ,995/4=293,,995%4=3 由于293为奇数则规则为无 中 食 拇,余数为3则最后为食指。

7夜过吊桥

四个人打算过一座吊桥,开始是他们都位于一侧。天很黑,四个人手里只有一个手电筒。该桥一次最多只能同时通过两个人,无论是一个人还是两个人过桥都需要携带手电筒看路,而且手电筒只能通过人携带过桥的方式传递。第1个人过桥只需要1分钟,第2个人需要2分钟,第3个人需要5分钟,第4个需要10分钟。由于速度不同两个人过桥以速度慢的为准。例如,如果第1人和第4人一起过桥,两人到达对岸需要10分钟,如果让4号走回来返还手电筒,则还需要10分钟,这一共就花费了20分钟。问他们四人能在17分钟 内过桥么?

解:

先让1和2过桥花费两分钟,然后1带手电筒回来花费一分钟,3和4出发花费十分钟,2回来接1花费四分钟。一共花费2+1+10+4=17。

不能用贪心算法解。

8拼图问题

有一片500片的拼图,假定一‘组’拼图是一片或多片已经拼接起来的拼图的组合,一次‘拼接’表示将两‘组’拼图拼在一起。问完成整个拼图共需要做多少次‘拼接’?

解:不论是两两拼接,然后四四拼接以此类推还是开始两片拼在一起一片片添加结果都是相同的都为499。第二种更好理解,除第一次之外的498次都是每片拼接一次。

9心算求和

图为一张10X10的表格,表格的对角线上是一系列重复的数字,试心算出表中所有数字的总和。

解:

总结规律:表格左上角的1加右下角的19为20,相邻的2和18的和也为20。以此总结除对角线数字为10的这一斜线上的数字外,可把表格做一个折叠,和都为20。表格总数为10X10=100,除去数字为10的10个数字外,其余和为45X20=900。再加上10X10=100,结果为1000.

10硬币中的假币

有8枚外观完全一致的硬币,其中的一枚是假币,并且知道假币要比真币轻一些,可以使用天平但不能用砝码,问最少称几次才能把假币辨别出来?

解:

答案为两次。第一次拿出6个硬币分成两堆上天平称重,如果等重则称其余两个硬币,哪个轻则为假币。如果不等重则称量轻的中的两个就能区分出哪个为假币。

11假币堆问题

有10堆10枚外观完全一致的硬币,,其中有一堆全都是假币,其他各堆中的硬币都是真币。所有的真币重量都是10克,假币则重11克。你有一把示数可读的秤,可以称出任意数目硬币的实际重量。问最少称几次才能将全部都是假币的那堆硬币辨别出来?

解:先为十堆硬币编号,从一编到十,从编号为一里拿一个硬币,从编号为二里拿出两个硬币,以此类推。共为55个硬币,用示数减去550结果就是假币的编号。

12平铺多米诺问题

能否用单位长度2X1的多米诺牌将8X8的方格阵铺满?里面不包含由两张2X1多米诺并行排列而成的2X2的正方形。

解: 不能

由于要求不允许包含2X1多米诺组成的2X2的正方形,所以只能一横一竖的排列。从不变量考虑,从左上角开始排布(具有对称性),对角线上竖行的2X1多米诺牌7块加上最开始的1块横多米诺牌填满方格阵的纵方向,而右下角横方向剩余1所以必定会出现两块多米诺牌。

13被堵塞的路径

图代表一座城市的地图,所有道路横平竖直。试找出从A点到B点所有最短路径的总数。需要注意的是,图中黑色的部分是被栏杆包围起来的部分,所有能穿越该区域的路径都被堵塞住了。

解:

简单算法谜题与解的个人想法相关推荐

  1. 用python解算法谜题_编程的乐趣 用Python解算法谜题

    这是一本介绍通过解决复杂谜题来学习编程的书,书中的代码用Python语言编写.与以往的编程书不同,本书将对代码功能的理解与编程语言语法和语义的理解分离开来,从解每个谜题开始,先给出解谜题的算法,随后用 ...

  2. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

  3. TOPSIS(逼近理想解)算法原理详解与代码实现

    写在前面: 个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣.中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所 ...

  4. [转]数据结构KMP算法配图详解(超详细)

    KMP算法配图详解 前言 KMP算法是我们数据结构串中最难也是最重要的算法.难是因为KMP算法的代码很优美简洁干练,但里面包含着非常深的思维.真正理解代码的人可以说对KMP算法的了解已经相当深入了.而 ...

  5. 学好顶级算法谜题,不再为了编程而编程

    谜题趣味非凡.顶级谜题的解可没那么浅显易得,需要灵光一闪才能发现.算法谜题是指谜题的解法就是算法,解题的步骤可以被机器自动执行.算法可以用英文或者其他任何自然语言来描述,但是为了更加精确,往往会用伪代 ...

  6. 数据结构KMP算法配图详解(超详细)

    KMP算法配图详解 前言 KMP算法是我们数据结构串中最难也是最重要的算法.难是因为KMP算法的代码很优美简洁干练,但里面包含着非常深的思维.真正理解代码的人可以说对KMP算法的了解已经相当深入了.而 ...

  7. 算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen

    算法:详解布隆过滤器的原理.使用场景和注意事项@知乎.Young Chen 什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data struc ...

  8. JAVA 判断简单密码算法_十道简单算法题二【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  9. JavaScript数据结构与算法——链表详解(下)

    在JavaScript数据结构与算法--链表详解(上)中,我们探讨了一下链表的定义.实现原理以及单链表的实现.接下来我们进一步了解一下链表的其他内容. 1.双向链表 双向链表实现原理图: 与单向链表不 ...

最新文章

  1. css规则_CSS规则,将使您的生活更轻松
  2. linux中使用svn客户端
  3. 为Linux命令起别名
  4. 前华为技术大牛告诉你:如何正确入门深度学习
  5. [css] 简述下你理解的优雅降级和渐进增强
  6. 201521123009 《Java程序设计》第1周学习总结
  7. 获取ASP.NET MVC中的完整操作URL [重复]
  8. 洛谷 2633 BZOJ 2588 Spoj 10628. Count on a tree
  9. .NET、ASP.NET控件及源码大汇总 最新最全哦
  10. CSDN 编辑器使用方法
  11. 复合隐写/图片混合/图片格式头修改-西伯利亚大尾巴狼
  12. 朴素贝叶斯-公园穿凉鞋问题的推导
  13. 日系插画学习笔记(五):日系角色脸部画法-1头部
  14. 阿卡迪亚大学计算机专业好考吗,加拿大阿卡迪亚大学热门专业介绍
  15. 如何解决win7开机提示未能连接一个Windows服务
  16. vue+Element-ui table按照字母排序
  17. R语言逻辑回归预测分析付费用户
  18. Nginx的 allow / deny 理解
  19. Hadoop配置—完全分布式
  20. Python条码识别:使用Python进行条形码识别的详细教程

热门文章

  1. linux下使用C获取mp3 ID3数据时的一些注意事项(v1,v2.3,v2.4)
  2. 用友NC6.5 Linux服务器环境部署
  3. Python语言程序设计-全课程总结与学习展望
  4. Tableau新手教程!第一个仪表盘!Tableau初学者
  5. springboot整合websocket使用介绍
  6. 12导联心电工作站的导联选择电路实现
  7. Mysql调优之Profiling
  8. PostgreSQL pg中 lpad函数使用
  9. Zonal harmonic 拟合 Spherical harmonic
  10. 控制面与数据面分离的思想及其应用