今天我们来聊聊算法

前几天,我在自己的朋友圈发了一张图片,图片如下:

今天我们来聊聊算法_第1张图片

显然,这是一张航线图。然后,我附上了一段文字,确切地说,是一个算法题。问题如下:

已知飞行路线如图所示,不考虑私人飞机以及代码共享航班,求该旅客至少需要搭乘几家航空公司才能完成飞行?它们分别可能是什么航空公司?以及对应的航线分别是哪条?

不出所料,这个朋友圈一发,我就收到了一堆以逼结尾的评论。从牛逼到二逼,再从装逼到傻逼。实际上,只要大家冷静一下,不要感情用事,其实会发现这是个很有意思的问题。老实说,我可是看着这个航线图花了整整5分钟才把问题给理出来。

那么,要解答这个问题呢,需要有几方面的知识呢?

首先,需要有一定的地理知识。如果只认识以天朝为世界中心的地图,那看这个图可能是会有点吃力。你肯定会问,天朝去哪了?

其次,需要了解机场的三字代码,只要加入了IATA国际航空运输协会的机场都会有个三位英文字母的代码,简称三字代码。比如上海浦东机场是PVG,虹桥机场是SHA。知道三字代码是一个很好的装逼手段。比如你说我是从PVG飞到HKG,这就比直接说浦东飞香港显得逼格要高一些。如果要Bigger than Bigger呢,那就还需要了解字母解释法。机场三字代码最常用的地方就是打电话给外国航空公司换里程票的时候,因为很多字母在电话中实际上是很难听清的,举个栗子,B和D就常常让人分不清楚,所以国际民航组织就推荐用一个常用的英文单词去解释这个字母。那像PVG,你可以直接读成Papa Victor GolfBOS可以读成Bravo Oscar Sierra;对方懂得自然就懂,也不会一直问你是不是B,然后你还不得不承认。

最后,就是要有常旅客的知识,了解主要的航空公司以及航线分布,并且懂算法。由图显然可得(做过中学几何证明题的应该都知道这几个字的份量),航线主要分三大块,中美航线,国内航线和中泰航线。

中美航线不经欧洲,那就只有中国或者美国的航空公司可选,然后看到底特律DTW,国内航空公司没有飞底特律的航线,有也只是代码共享航班,题目已排除这种情况,所以这条中美航线只能是美国的航空公司。

国内航线就是一条上海到南昌PVG-KHN,这个路线只有国内航空公司执飞,所以到现在是至少要搭乘两个航空公司。

中泰航线是上海经香港HKG转机抵达曼谷BKK,最后去苏梅岛USM。那这条航线有没有可能只搭乘一个航空公司呢?答案是不能,至少需要两个航空公司。曼谷到苏梅是泰国国内航线,只可能由泰国航空公司运营。这条航线是条很特殊也很热门的航线,基本被曼谷航空垄断,泰航一天也有几班,但远远不如曼航。曼谷航空是区域性的航空公司,没有飞上海的航班。泰航有,但是因为上海去曼谷有转机香港,而香港并不是泰航的Hub。如果搭乘泰航从上海飞曼谷,必然是直飞,不可能香港转机。所以从上海经香港转机去曼谷,只可能是香港的航空公司,比如港龙国泰之类。

那现在这题的答案就很清晰了,至少需要搭乘4个航空公司才能完成这条航线。中美航线看到底特律DTW和西雅图SEA,熟悉的应该直接就能想到达美,因为这两个城市是达美很大的Hub。国内上海到南昌,东航肯定有航线,而我是飞深圳航空,因为我有一堆国航里程每月都在过期,深航早早被国航收购,我的国航里程基本都花在这条航线上。而中泰航线是国泰和曼谷航空,国泰负责把我运到曼谷,然后曼航负责苏梅那一段。

这一圈飞下来,距离大概是6万公里,而赤道周长也就4万公里,相当于绕着地球飞了一圈半。那实际的成本又是多少?中美航线现在是淡季,我直接买的票,大概500美金左右。国内航线我用16000国航里程加上100人民币税费搞定。中泰航线复杂点,以后我会单独写文章来讲,我是用了30000亚洲万里通里程加上403港币以及一张大概100美金的苏梅到曼谷单程票搞定。

合计的现金开销大概在4300人民币左右,这些钱还不够买个iPhone 6s吧?当然里程也是钱,这个我们以后再聊。

为了温习下今天学过的知识,如果感兴趣的话,可以根据下图回答同样的问题。这个航线是今年1月份家人实际飞过的路线,成本大概是1800人民币加上70000的美联航里程。

今天我们来聊聊算法_第2张图片

如果想了解更多有趣的旅游以及时尚知识,可以关注我的微信公众号。扫描我个人资料中的二维码即可,相信我,关注了,你会掉斤肉的。

你可能感兴趣的:(今天我们来聊聊算法)