感觉几乎都是从这篇文章里找的:[https://blog.csdn.net/Hackbuteer1/article/details/6726419](https://blog.csdn.net/Hackbuteer1/article/details/6726419)
[https://blog.csdn.net/bigpudding24/article/details/44198989](https://blog.csdn.net/bigpudding24/article/details/44198989)
# 1.赛马问题
一共有 25 匹马,有一个赛场,赛场有 5 个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少得比多少场才能知道跑得最快的5匹马。
参考答案:[答案](https://hxraid.iteye.com/blog/662643)
# 2.握手问题
5 对夫妻互相握手,有 1 人发现除他自己外其他人的握手次数各不相同(他自己可以与其中任何一人的握手次数相同),问这个人的握手次数?
条件:① 夫妻之间不能握手 ② A 和 B 握手后不能再次握手
参考答案:一共 10 人,每人握手次数为 0 ~ 9
假设一对夫妻中有 1 人握手次数为 8,那么其他人肯定与他握了 1 次手(握手次数大于等于 1),那么其妻子的握手次数肯定为 0;依次类推,得到以下握手次数的组合
8 | 0  7 | 1  6 | 2   5 | 3  4 | 4
所以发现的人肯定是握手了 4 次的
# 3.倒水问题
一个 3 升的桶和一个 5 升的桶最后怎么装 4 升的水?
答:5 升满上倒入 3 升桶里,5 升桶剩 2 升;3 升桶倒光,2 升倒入 3 升桶,5 升桶再满上倒入 1 升到 3 升桶中
# 4.天平秤重
有 16 个球,一个是次品,次品比较轻,利用天平,至少几次保证能找到次品?
参考答案:3 次
第一次:两边一次各放 5 个,较轻的,次品就在里面,如果平衡,则次品在剩下的 6 个里面
第二次:情况 1,如果在上面 5 个堆里,两边各放 2 个,较轻的,次品就在里面;如果平衡,则次品就是剩下一个 ;情况 2,如果在上面 6 个堆里,两边各放 2 个,较轻的,次品就在里面;如果平衡,则次品就是剩下 2 个中的一个
第三次:再拿有次品的两个放在天平上,较轻的就是次品
综上所述,16 个球称三次就可以保证找到次品
# 5.矩阵分为同样大小的正方形
把如图的长方形分成若干个同样大小的正方形,要使正方形尽可能大,那么正方形的边长最长是多少?
![](http://thumb.1010pic.com/pic3/quiz/images/201608/128/2043ad41.png)
**分析**:分成同样大小,且没有剩余,就是分成的小正方形的边长是 48 和 30 的公因数,要使正方形尽可能大,就是以 48 和 30 的最大公因数为小正方形的边长.
**解答**:解:48=2×2×2×2×3,
30=2×3×5,
所以 48 和 30 的最大公因数是:2×3=6;,即小正方形的边长是 6 厘米.
答:正方形的边长最长是 6cm.
附:求最大公约数 [辗转相除法](https://baike.baidu.com/item/%E8%BE%97%E8%BD%AC%E7%9B%B8%E9%99%A4%E6%B3%95/4625352?fr=aladdin)
# 6.任意时间求时针与分针的夹角
设 12 时的刻度线为 0 度,作为角度起点线,
任意时刻 X 时 Y 分时的两针位置:
因为分针每分钟转 360 / 60=6°
时针每分钟转 360 / (12\*60)= 0.5°
时针每 1 小时转 360 / 12=30°
所以,
在 X 时 Y 分时,时针与 0 度起点线的夹角(转过角)是:30X+0.5Y
在 X 时 Y 分时,分针与 0 度起点线的夹角(转过角)是:6Y
时针和分针夹角 θ 的计算公式是:
θ = |6Y - (30X + 0.5Y)| = |5.5Y - 30X|,单位是度(°)
习惯上,超过 180° 的角度一般用它的小于 180° 的角度(360° - |5.5Y - 30X|)表示它们的夹角.
例如:8:30 时的两针夹角:将 X=8,Y=30 代入上式,得夹角=75° .
# 7.海盗分金币问题
转自 [https://blog.csdn.net/csdnsevenn/article/details/86522861](https://blog.csdn.net/csdnsevenn/article/details/86522861)
海盗分金币问题:
有 5 个海盗,获得了 100 枚金币,于是他们要商量一个方法来分配金币。商议方式如下:
1\. 由 5 个海盗轮流提出分配方案。
2\. 如果超过半数海盗(包括提出者)同意该方案,则按照该方案分配。
3\. 如果同意该方案的人数(包括提出者)小于等于半数,则提出者要被扔到海里喂鱼,剩下的海盗继续商议分配。
4\. 海盗们都是绝对理性的,以自己尽可能多获得金币为目的。但是在收益相等的情况下,会倾向把提出者扔到海里。
问:第一个海盗应该提出怎样的分配方案,才能保证自己既不被扔到海里,又能使自己利益最大化?
*****
这个问题需要用递归的思想来解决:
我们把五个海盗简称为老一、老二、老三、老四、老五。
老一在提出分配方案的时候,不妨这样思考:
如果我被扔到海里了,剩下**4**个海盗,此时老二的最优分配方案是什么呢?
我只要在老二的分配方案上稍微增加一点,就能赢得更多的支持。
老二在提出分配方案的时候,也会这样思考:
如果我被扔到海里了,剩下**3**个海盗,此时老三的最优分配方案是什么呢?
我只要在老三的分配方案上稍微增加一点,就能赢得更多的支持。
老三在提出分配方案的时候,还是会这样思考:
如果我被扔到海里了,剩下**2**个海盗,此时老四的最优分配方案是什么呢?
我只要在老四的分配方案上稍微增加一点,就能赢得更多的支持。
整个递归过程,就像下图一样:
![](https://img.kancloud.cn/f8/29/f829a6edf99041fc5a616be366131e1d_409x556.png)
这个递归过程到什么时候截止呢?剩下两个人为止。
想想看,当剩下两个人的时候,是什么情形?
此时老四**没有任何选择**!无论他如何分配,哪怕把100枚金币都给老五,老五仍然可以反对,导致老四被扔到海里,金币全归老五所有。
![](https://img.kancloud.cn/0b/0c/0b0c0908b75d992ea1450e838958f672_735x320.png)
由此,老三心想:老四没有最优决策,所以无论我提出什么要求,老四都一定会同意,而老五一定不同意。
由于只要超过半数同意就可以执行分配,所以老三的最优策略如下:
![](https://img.kancloud.cn/b3/b5/b3b59dd265c66fda43c779c7dcb4d021_735x320.png)
接下来,老二暗自寻思:如果没有我,老三能获得100枚金币,所以无论如何不会同意我。但我可以设法“笼络”老四和老五,形成 3 : 1 的局面。
在老三的“淫威”下,他们原本一个金币都得不到。我给他们一人一枚金币,好过由老三来分配,所以他们肯定会同意。
因此,老二的最优策略如下:
![](https://img.kancloud.cn/cf/a4/cfa45c96788f06e35c552c54ae59520a_735x320.png)
终于轮到老一了,老一心里琢磨:如果没有我,老二能获得 98 枚金币,我总不能分给他多于 98 枚,索性放弃他,只要剩下三人中笼络到两人,形成 3 : 2 的局面即可。
要笼络谁呢?以老二的策略,老三得不到金币,所以老三最好“伺候”。我给老三 1 枚,老三一定同意。
至于老四和老五,本来可以得到 1 枚,所以我必须比老二给的多,才能赢得支持。但我又没必要同时笼络他俩,要么给老四两枚金币,放弃老五,要么给老五两枚金币,放弃老四。
因此,老一的最优策略如下:
![](https://img.kancloud.cn/ae/d9/aed96a09fa1ef31ac6d24d767f7bad61_735x710.png)
- 序言 & 更新日志
- H5
- Canvas
- 序言
- Part1-直线、矩形、多边形
- Part2-曲线图形
- Part3-线条操作
- Part4-文本操作
- Part5-图像操作
- Part6-变形操作
- Part7-像素操作
- Part8-渐变与阴影
- Part9-路径与状态
- Part10-物理动画
- Part11-边界检测
- Part12-碰撞检测
- Part13-用户交互
- Part14-高级动画
- CSS
- SCSS
- codePen
- 速查表
- 面试题
- 《CSS Secrets》
- SVG
- 移动端适配
- 滤镜(filter)的使用
- JS
- 基础概念
- 作用域、作用域链、闭包
- this
- 原型与继承
- 数组、字符串、Map、Set方法整理
- 垃圾回收机制
- DOM
- BOM
- 事件循环
- 严格模式
- 正则表达式
- ES6部分
- 设计模式
- AJAX
- 模块化
- 读冴羽博客笔记
- 第一部分总结-深入JS系列
- 第二部分总结-专题系列
- 第三部分总结-ES6系列
- 网络请求中的数据类型
- 事件
- 表单
- 函数式编程
- Tips
- JS-Coding
- Framework
- Vue
- 书写规范
- 基础
- vue-router & vuex
- 深入浅出 Vue
- 响应式原理及其他
- new Vue 发生了什么
- 组件化
- 编译流程
- Vue Router
- Vuex
- 前端路由的简单实现
- React
- 基础
- 书写规范
- Redux & react-router
- immutable.js
- CSS 管理
- React 16新特性-Fiber 与 Hook
- 《深入浅出React和Redux》笔记
- 前半部分
- 后半部分
- react-transition-group
- Vue 与 React 的对比
- 工程化与架构
- Hybird
- React Native
- 新手上路
- 内置组件
- 常用插件
- 问题记录
- Echarts
- 基础
- Electron
- 序言
- 配置 Electron 开发环境 & 基础概念
- React + TypeScript 仿 Antd
- TypeScript 基础
- 样式设计
- 组件测试
- 图标解决方案
- Algorithm
- 排序算法及常见问题
- 剑指 offer
- 动态规划
- DataStruct
- 概述
- 树
- 链表
- Network
- Performance
- Webpack
- PWA
- Browser
- Safety
- 微信小程序
- mpvue 课程实战记录
- 服务器
- 操作系统基础知识
- Linux
- Nginx
- redis
- node.js
- 基础及原生模块
- express框架
- node.js操作数据库
- 《深入浅出 node.js》笔记
- 前半部分
- 后半部分
- 数据库
- SQL
- 面试题收集
- 智力题
- 面试题精选1
- 面试题精选2
- 问答篇
- Other
- markdown 书写
- Git
- LaTex 常用命令