面试之逻辑推理系列--必有一站出发可走完环行公路(转)

转载 2007年10月01日 15:41:00

 

证明:必有一站出发可走完环行公路(转)
 
看到一个有趣的问题:一条环形公路,公路上有n个加油站,每个加油站有若干油,这n个加油站的油的总和,刚好可以走完整条环形公路。求证,一定可以找到一个加油站,开车从这里出发(出发时车上没油,方向不定),然后走完这条公路。
 
假设任意两个相邻的加油站都不能抵达,则易反证得,所有油的总和走不完这条环形公路。(分类)
 
所以,可以合并那些两两之间可以到达的相邻加油站,让他们变成一个加油站,这个加油站的油的数量是这若干个可达加油站的油总和减去两个端点距离所耗油数量,结果就是环形公路变短了,变成了一个小环,这个时候油也变少了(归纳)
 
然后又回到起点,在这个小一点的环上进行分类,一直递归下去。(演绎)
classification这个词太漂亮了,目前来说,我觉得问题大多可以直接靠它来解决,小部分可以间接靠它解决。
 
证明不一定要反证,可以正面证明。证明这个问题等价于必然可以找到一个点(假设为P(0))可以走到P(n-1),其中路线是p(0)->p(1)->p(2)...p(n-1),因为如果这样的话,车子必然已经加到所有油站的油,而剩下只有一段路,肯定能走完,所有问题转化为p(0)->p(n-1),同理合并p(0)和p(n-1)(因为二者可达),以此归纳下去,直到两个加油站,显然这两个加油站是可达的。
通过将问题的转化,归纳,将规模分解,求证即易得。
 
我的想法是:
1.必存在一个站,它可以达到它相邻的两个站中的一个。
证明:假设环形公路总长为L,n个站分别为S1,S2,...,Sn,汽车每行驶一个单位长度的路耗油量为一个单位容积,那么总油量在数值上等于L(转化为某特定单位,便于用数学分析),设为V,有V==L。每个站的储油量分别为V1,V2,...Vn,相邻两站的距离为L12,L23,...Ln1。
假设不存在这样的站,则有
V1 < L12, V1 < Ln1
V2 < L12, V2 < V23
V3 < L23, V3 < L34
...
Vn < Ln1, Vn < Ln-1n
将所有式子叠加,则有
V1+V2+...+Vn < L12 + L23 + ... + Ln1
与题设的V1+V2+...+Vn == L12 + L23 + ... + Ln1矛盾,所以1成立。

2.将这个站与它所能达到的那个邻位站合并,则所得新站必能达到和它相邻的两个站中的一个。
证明:假设结论1中的那个站编号为S1(假设而已,便于分析,本质上任意点都可以),那么由1得
V1 >= L12 或者 V1 >= Ln1,随便取一个,取V1 >= L12,那么合并的站是S1和S2,此时新站S12的储油量(数值上)为V12 = V1+V2-L12,总路长为L23 + L34 + ... + Ln1,类似1的证明,假设V12 < L23 且 V12 < Ln1,那么就有
V12 + V2 + ... + Vn < L23 + L34 + ... + Ln1,将V12的表达式代入并移项,则又得到了1的那个不等式,与题设矛盾,因此2也成立。
那么就这样一直开下去,就能把整个公路开完。

呵呵感觉写得罗嗦了一点,其实也可以算是一种正向的思路,因为也是从某一个站开始,一个一个走完整条公路的,只是用了反正法(还包括了递归)证明~~~

环形加油站问题

问题城市的环形路有n个加油站,第i个加油站的油量用gas[i]来表示,你有如下的一辆车:它的油缸是无限量的,初始是空的它从第i个加油站到第i+1个加油站消耗油量为cost[i]现在你可以从任意加油站开...
  • gatieme
  • gatieme
  • 2015年10月17日 21:20
  • 2512

PythonTip 50道题目(部分题解)

格式化时间  讨论此题 | 解题报告  顶(5) (AC/Submit)Ratio(734|1830)40.11%  踩(5) 描述: 给你一个时间t(t是一个字典,共有六个字符串key(year...
  • xunalove
  • xunalove
  • 2017年06月30日 20:03
  • 587

python挑战题(转+个人解答)

http://www.pythontip.com/coding/code_oj 题目id: 1 just print a+b give you two var a and b, pri...
  • u014015972
  • u014015972
  • 2015年09月04日 10:38
  • 1665

必有一站出发可走完环行公路

From: http://blog.csdn.net/sailor_8318/article/details/1809001 看到一个有趣的问题:一条环形公路,公路上有n个加油站,每个加油站...
  • Vast_Sea
  • Vast_Sea
  • 2012年10月30日 09:39
  • 662

IT企业面试常见逻辑推理题智力题及详解答案(一)

燃绳问题 烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢? 解题思路: 烧一根这样的绳,从头烧到尾1个小时。由此可知,头尾同...
  • shihui512
  • shihui512
  • 2013年06月16日 22:37
  • 2831

LintCode贪心法题总结

贪心法的题目主要就考你会不会做,知道就知道,不知道那就很难知道。没啥套路,所以需要把这些题目过一遍。 82. Single Number 一个数组中,每个数字都出现了2次,只有一个数字出现了1次,要求...
  • luoshengkim
  • luoshengkim
  • 2016年08月10日 13:49
  • 479

Gas Station (环形加油站)

题目:有n个加油站首尾相连成一个圆,已知每个加油站的油量,以及从第i个加油站到第i+1个加油站需消耗的油量,问:能否开车从某个加油站出发,循环一圈又回到起点,如果可以返回出发的起点(车的邮箱容量是无限...
  • elton_xiao
  • elton_xiao
  • 2014年11月14日 10:29
  • 762

SDUT3362数据结构实验之图论六:村村通公路

#include #include #include #include using namespace std; struct node { int u,v,w; bool opera...
  • nar666
  • nar666
  • 2016年08月01日 09:44
  • 828

数据结构实验之图论六:村村通公路 sdut oj (3362)

prim算法
  • rain_snowing
  • rain_snowing
  • 2016年08月18日 09:28
  • 964

算法:C++实现动态规划中的几个典型问题

动态规划的思想在程序设计中占有相当的分量,动态规划的主要思想就是把大问题划分为小问题,通过求解小问题来逐渐解决大问题。 满足动态规划思想的问题具备两个典型特征: 最优子结构:就是说局部的最优解能...
  • u010558281
  • u010558281
  • 2017年07月31日 18:49
  • 557
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面试之逻辑推理系列--必有一站出发可走完环行公路(转)
举报原因:
原因补充:

(最多只允许输入30个字)