鸽巢原理(初识)(纯算法)
来源:互联网 发布:python range函数菜鸟 编辑:程序博客网 时间:2024/05/22 17:31
http://www.docin.com/p-1352185354.html
一.什么是
鸽巢原理(抽屉原理)若把n个物体放在n - 1个抽屉中,至少有一个抽屉中放了两个物体。
二. 特点
只能用于解决存在性问题
三.例题
例一: 在边长为1的三角形放5个点,至少有两个点之间的距离<=1/2
解析:将一个三角形分为4个三角形,在四个三角形中放5个点,则至少有两个点在同一个三角形中,这两个点之间的距离最长为1/2,得证
例二:某次会议n位代表参加,至少有两个人认识的人数相等。注意认识是相互的
解析:首先讨论每个人都至少认识一个人的情况,这种情况下,认识的人数为1到n-1.参加会议的人数n得证
假设有人一个人都不认识,这时剩下的人中认识的人的个数只能是1-n-2,人数为n-1.依次类推,知道将所有一个人都不认识的alone people消掉,就优惠产生鸽巢原理的情况
例三:从1到2n中,选n + 1个数,至少有一对数,其中一个数是另一个数的倍数
解析:将选中的n+1个数中所有的2都除掉,即除以2^k,由于1-2n中只有n个奇数,一定有一对数的奇数形式相等的。这两个数分别是2^m*equal,2^n*equal,因此一定一个数是另一个数的倍数
例四:从1-2n中,选n+1个数,至少有一对数是互素的
解析:首先明确一点,相邻的两个整数一定是互素的,证明如下:
假设这两个整数为n,n+1.假设他们不是互素的,有公共因子q
n = p1 * 1,n + 1 = p2 * q
n+1 - n = q(p2 - p1)
q(p2-p1) = 1
其中p2,p1均为整数,q >=2,可证不等
可将这2n个数分为n分每分为(1,2)(3,4)……(2n-1,2n),从n分中选n+1个数,则至少有两个数来自同一份,至少有两个数是互素的
- 鸽巢原理(初识)(纯算法)
- 什么是算法(初识算法)
- Ajax初识_通过ajax校验数据(纯文本)
- 初识AS3(六)——纯AS钟表
- 初识A*算法(转)
- CSS:纯CSS绘制三角形(原理)
- kmp算法理解(纯收集)
- Dijkstra算法模板(纯代码)
- 贪心算法之近似算法(格雷厄姆算法)初识
- 初识AS3(四)——简单纯AS播放器
- C++ 享元模式 (纯代码,看原理绕行)
- A*算法之旅之初识A*算法(一)
- Chord算法(原理)
- Chord算法(原理)
- Chord算法(原理)
- Chord算法(原理)
- Chord算法(原理)
- Chord算法(原理)
- Mac rtfs isn't recognize question
- spring mvc搭建web services
- Educational Codeforces Round 15
- 面试题64:数据流中的中位数
- 实现数字向人民币大写转换
- 鸽巢原理(初识)(纯算法)
- 初识ReactJS的组件化开发(六):ajax更新评论列表时的定时器bug修改
- 在 Win7/Win8下使用 VirtualBOX虚拟机安装 OS X 10.11 El Capitan 及 Xcode 7.0
- POJ-1125-Stockbroker Grapevine
- LRU算法
- window远程连接Ubuntu 14.04的桌面
- 2. Add Two Numbers
- POJ-1511 Invitation Cards
- 友盟下线后,开发者该如何实现自动更新