本题节选自《C/C++程序员面试指南》一书

面试题7:飞机绕地球环行问题

已知每架飞机有一个油箱,飞机之间可以相互加油,一整油箱的油可以供一架飞机绕地球飞行半圈。为使至少一架飞机绕地球一圈回到飞机起飞的机场,至少需要使用几架飞机,飞行几个架次?

所有飞机从同一飞机场起飞,而且必须安全返回机场,不允许中途降落,一架飞机起飞一次算作一架次,加油时间可以忽略。

1.所涉及的知识点

· 作图法

· 计算法

2.分析问题

借助于图形解决问题的方法就是图形法。根据问题中已知的条件,采用适当的方法画出图形,有助于问题的解决。有些问题,在没画图之前,会觉得无从下手,画了图后就一目了然了。

对于本题只是用脑子去想象来解决这道题是件很复杂的事,如果借助于图形来解决就简单多了。在此假设地球的长度为1,根据题意可知一油箱的油可以让一架飞机绕地球持续飞行1/2。现假设飞机起飞地点为x,如图12.9所示。

图12.9 飞机环行地球示意图

根据条件可推知,只用一架飞机肯定是无法完成任务的。当用两架飞机时,两架飞机的油量刚好够一架飞机绕地球一圈,无论怎么补充也完成不了航行任务。所以至少有三架飞机,设为飞机A,飞机B和飞机C。整个飞行过程如下:

(1)三架飞机同时从飞机场x同向起飞。如图12.10所示。

(2)到1/8时A、B和C的可持航油量都为3/8,此时C将油量的1/8给B,另外1/8的油量给A后,A和B的剩余可持航油量1/2,C剩余1/8的可持航油量正好足够返航。A、B继续飞行,C返航,如图12.11所示。

图12.10 三架飞机同时逆时针起航 图12.11 C返航

(3)到达1/4处时A和B的可持航油量都为3/8,C已返回机场。此时B将1/8的油量给A,A的可持航油量为1/2,B的可持航油量为1/4恰好可以安全返航,此时A继续绕地球飞行,B返航,如图12.12所示。

(4)当A到达1/2处时,A的可持航油量为1/4,此时A继续绕地球飞行。B已经到达机场,B加满油顺时针起飞,如图12.13所示。

图12.12 B返航 图12.13 B顺时针起航

(5)A和B在3/4处相遇,此时A的可持航油量为0,B的可持航油量为1/4,B将1/8的可持航油量分给A后,A、B的油量相等,都为1/8。A和B同时逆时针飞行,C此时在机场装满油顺时针起飞。如图12.14所示。

(6)A、B和C相遇在7/8处,此时A和B的油量为0,C的油量为1/4,C将1/8的可持航油量分给A,再将1/8的可持航油量分给B后,三者的油量相同,都恰好够飞回机场。三架飞机逆时针向机场飞行,如图12.15所示。

图12.14 C顺时针起航,B逆时针返航 图12.15 C逆时针返航

(7)三架飞机同时安全返回机场,飞机A成功绕地球飞行一圈。

共用了三架飞机,A起飞一次,B起飞两次,C起飞两次。所以共用了三架飞机,5个航次。

根据观察可以发现后1/2的飞行情况是前1/2的反序。所以在分析完前1/2时,就已经可以算出总共需要的飞机架次。

3.答案

共用了三架飞机,5个航次。

事实上,许多问题都要运用几种不同的方法才能解决。所谓综合法,就是综合各种方法(包括前述各种方法以外的方法)去解决某些问题。所以不要只是简单地硬套方法,应该了解各种方法的技巧,随机应变。

书名:C/C++程序员面试指南

作者:杨国祥 等编著

ISBN 978-7-121-10359-9

出版日期:2010年3月出版

定价:49.00元

宣传语

从企业面试的角度来梳理C/C++程序员的技术功底

以技术经理的眼光来审视对C/C++编程知识的掌握

内 容 简 介

C、C++语言是IT行业的主流编程语言,也是很多程序员必备的软件基本功,是软件开发行业招聘考查的重点。本书以流行的面试题讲解为主要内容,介绍了C、C++语言基本概念,包括保留字、字符串、指针和引用、结构体、库函数等各个方面的基础知识,介绍了面向对象编程基本概念,包括如何实现继承、多态和封装等。还介绍了排序算法及数据结构的实现,包括链表、堆栈、队列和树。此外,本书开始用两章篇幅详细介绍了中英文面试的注意事项、常见问题及程序员的职业规划等软件工程师的常识。最后四章详细讲解了现在流行的智力测试题。

本书的特点是在详细介绍C、C++面试中常见技术问题的同时,还详细讲解了智力测试的基本方法及数学能力、推理能力和反应能力的常见测试题。本书适合正在找工作的应届毕业生,也适合想要换工作而基础知识不扎实或不熟悉智力测试的老程序员。

购买地址: 当当网 卓越网 中国互动出版网

同类书推荐:.NET程序员面试指南(含光盘1) Java程序员面试指南

本书详细信息:http://www.broadview.com.cn/10359

更多图书信息:www.broadview.com.cn

最新活动:2010508 博文视点大讲堂第26期——中国移动创新系列丛书《OPhone应用开发权威指南》读者交流活动

想即时获取更多图书及活动资讯,赶快加入博文视点读者俱乐部 吧!

小学的题 大学的解法相关推荐

  1. 一道小学奥数题的编程解法

    一道小学奥数题的编程解法 这是一道小学奥数题,看到这一题后如果只给我笔和纸,我真的无从下手,不知怎么去把这些方框填出来.但借助编程,这道题就非常简单了.直接送上代码. C++程序代码 #include ...

  2. LeetCode 148. Sort List--面试算法题--C++,Python解法

    LeetCode 148. Sort List–面试算法题–C++,Python解法 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大 ...

  3. C# 解某道小学奥赛题

    小学奥赛题: 黑板上写着一个形如8888--88的数,每次擦掉一个末位数,把前面的数乘2,然后再加上刚才擦掉的数,对所得的新数继续操作,最后得到的数是多少? using System; using S ...

  4. 小学计算题一次大满足

    海量小学计算题 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 120 300 • Esti ...

  5. c语言 奥数题目及答案,小学奥数题C语言解法

    朋友给我发了一个小学的奥数题,尝试解了一会儿没有找到方法,于是编辑了一个小程序解决了 上面的是题目 下面的是实现的代码,仅做参考 #include #ifdef __cplusplus extern ...

  6. LeetCode 445. Add Two Numbers II--面试算法题--C++,Python解法

    题目地址:Add Two Numbers II - LeetCode You are given two non-empty linked lists representing two non-neg ...

  7. LeetCode 141. Linked List Cycle--面试编程题--C++,Python解法

    题目地址:Linked List Cycle - LeetCode Given a linked list, determine if it has a cycle in it. To represe ...

  8. 【解题报告+通法】_九宫幻方 蓝桥杯 2017年C组第八题(dfs解法)

    题目描述 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶幻方又被 ...

  9. 一道皮皮物理题的皮皮解法

    " 从前,有一位叫做马克思 普朗克(Max Planck)的很帅的物理学家.有一天,他正在思考黑体辐射问题.他看了一下旁边的钟正一秒一秒的过去.于是他突发奇想,会不会能量也是像钟的秒针这样, ...

  10. 3dsmax学校教室模型_从小学教室到大学教室的开放项目合作

    3dsmax学校教室模型 教学实践应建立在协作和重新混合内容的基础上. 当朋友要我们解释一些事情时,我们不会在未要求输入任何内容的情况下将答案标记为商标或独白. 这是一个简单的示例,但它涉及到我们现有 ...

最新文章

  1. Pymol(1.8.6)作图技巧之cartoon和surface镶嵌模型
  2. 从头开始 启动开源电商项目jShop
  3. SystemTap工具的使用基础
  4. filebeat获取nginx的access日志配置
  5. apache ab压力测试学习
  6. vscode 预览图片 插件_真的动手写的VSCode的插件(图片浏览)之1
  7. python 函数进度条怎么_刷新你对进度条的认识,用python写出不一样的进度条
  8. Linux如何清除系统密码,如何消除LINUX系统密码
  9. Python输入,输出,Python导入
  10. UI自动化测试篇 :Selenium2(Webdriver)TestNG自动化测试环境搭建
  11. Assembly初识
  12. 港交所上新衍生工具:“界内证”——交易规则与投资价值全解析
  13. 树莓派安装raspbian并配置开发环境
  14. PLSQL Developer 13安装教程
  15. 智能手机linux系统下载软件,智能手机下载工具
  16. android 多媒体音频占用情况监听
  17. 天翼网盘在线直链解析源码
  18. 移动终端安全问题分析与解决方案研究
  19. Java实习生常规技术面试题每日十题Java基础(一)
  20. 这次,大数据工程师赢了!

热门文章

  1. SQL中char、varchar、nvarchar的区别
  2. Java测试代码及原理
  3. 处理模型——通过扩展模型处理器直接处理每个ModelMesh的顶点位置数据
  4. yum 崩溃的解决方法
  5. 梆梆加固还原DEX文件
  6. ORA-06502: PL/SQL: numeric or value error: character to number conversion error 错误的解决方法...
  7. python max int
  8. CSDN 编辑器使用指南
  9. 【往届已EI稳定检索】第二届计算机科学与管理科技国际学术会议,多主题征稿!...
  10. 【经验】聊自己非计算机专业做程序员的经验