一个有趣的算法题据说是华为面试题
要求:在50分钟以内,用程序写出下面题目的解决方案,所用语言不限,代码行数不要超过100行,允许有一点点语法错误。
题目:美国战机F-16由于战略需要,做环球航行,环球飞行的距离为S,
已知F-16的最大载油量允许其最大连续航行距离1/2*S(一满箱油飞半个地球),,
所有飞机只能从一个机场起飞/降落(中间无任何机场),
飞行中间只允许飞机互相加油,那么,问要让一架飞机达到全球飞行的目的,
至少要出动多少架次飞机?
我能找到的最佳方案是:需6架次飞机.
问题出处:
http://www.nokiamobile.org.cn/18_100212_1610845.html
设机场在A 点
没飞机油箱容量为1, 途中至少加 1箱油,可从A->B->C->D完成航行。
若加两次油
1=1/2+1/2
若加四次油
1=1/4+1/4+1/4+1/4
观察上图,可看出,对主机的最佳加油点位在B 、D。
设编号为1号的飞机为主飞机,其它的飞机为加油机。
分析一:
出发时 1 、2 号同时起飞 至 X 点
1 号 剩余 3/4 2号 剩余 3/4
从2号向1号加 1/4 , 此时
1 号 剩余 4/4 2号 剩余 2/4 ,