(注: 架次是指一架飞机起飞一次算一架次)
180 个解决方案
#1
一下是我的想法 不知是否最优 求高手算法实现
共3架飞机:A,B1,B2 A机用于环游,B1,B2用于护送,接应,全过程如下:
1.A,B1,B2,飞机同时从机场起飞.
2.当飞行到1/8S时,3架飞机都还有3/4的油,B2分别将1/4的油输给A和B1.这样A和B1都为全满的油,B2还剩下1/4,B2返航.
3.A和B1飞机继续飞行,至1/4S时,这时A和B1都剩下3/4的油,B1将1/4的油输送给A,这样B1有1/2的油,返航,A油全满,继续飞行.
4.当A飞机飞到1/2S时,这时A飞机有1/2的油.B1从机场从反方向起飞5.当A飞机飞到3/4S时,B1飞机也同时到达,B1现在剩下1/2的油,而A则没油了,B1将1/4的油给A,同时两飞机均返航,这时,从机场起飞B2飞机,反方向飞行.
6.当A,B1,B2飞机在7/8S处相遇时,A和B1均没油了,B2有3/4的油,C2分别给C1和A各1/4油后,3飞机同时返航,到机场时,均油尽.
共3架飞机:A,B1,B2 A机用于环游,B1,B2用于护送,接应,全过程如下:
1.A,B1,B2,飞机同时从机场起飞.
2.当飞行到1/8S时,3架飞机都还有3/4的油,B2分别将1/4的油输给A和B1.这样A和B1都为全满的油,B2还剩下1/4,B2返航.
3.A和B1飞机继续飞行,至1/4S时,这时A和B1都剩下3/4的油,B1将1/4的油输送给A,这样B1有1/2的油,返航,A油全满,继续飞行.
4.当A飞机飞到1/2S时,这时A飞机有1/2的油.B1从机场从反方向起飞5.当A飞机飞到3/4S时,B1飞机也同时到达,B1现在剩下1/2的油,而A则没油了,B1将1/4的油给A,同时两飞机均返航,这时,从机场起飞B2飞机,反方向飞行.
6.当A,B1,B2飞机在7/8S处相遇时,A和B1均没油了,B2有3/4的油,C2分别给C1和A各1/4油后,3飞机同时返航,到机场时,均油尽.
#2
二架次
假设以A做环球飞行,B作为空中加油机,(附加条件,加油时间和加油中的油耗损失忽略不计)
1.A,B同时起飞,当飞至1/4S时,B把半油箱油加入到A中,这时B可安全返般(即B以半油箱飞1/4的距离),A这时还剩满箱油,可以飞至3/4S处
2.当A飞至1/2S时,B飞机从反方向飞行,当A飞到3/4S时,B飞机刚才到达,B把半箱油加入到A中,A,B同时到达终点
假设以A做环球飞行,B作为空中加油机,(附加条件,加油时间和加油中的油耗损失忽略不计)
1.A,B同时起飞,当飞至1/4S时,B把半油箱油加入到A中,这时B可安全返般(即B以半油箱飞1/4的距离),A这时还剩满箱油,可以飞至3/4S处
2.当A飞至1/2S时,B飞机从反方向飞行,当A飞到3/4S时,B飞机刚才到达,B把半箱油加入到A中,A,B同时到达终点
#3
我就不知道能不能反方向航行,好像也没有规定不允许。
to 龙行天下,你在第一步的时候B把半箱油都给了A,那他自己就没油了。第二步也是哦。损失了两架飞机。
:)
to 龙行天下,你在第一步的时候B把半箱油都给了A,那他自己就没油了。第二步也是哦。损失了两架飞机。
:)
#4
^_^ 首次听闻
#5
中国的很多题目(不知道国外什么样),题面总是默许了很多前提条件和约束条件,如果真的像搞科研一样严谨,出题者又说我们是钻牛角尖,真是没办法.
比如说这个题,派个加油机在航行过一半时加满不就完成任务!
比如说这个题,派个加油机在航行过一半时加满不就完成任务!
#6
面试题考这个能有多少人短时间内回答出来啊?
#7
这是个数学问题吧。
建个数组,一架,2架,3架,。。。。。n架能飞多远,带入s,找到对应的下标就可以了。
现在问题变为,数组中各值得递推关系如何。
哈哈,n1=1/2;n2=?/n3=?............
建个数组,一架,2架,3架,。。。。。n架能飞多远,带入s,找到对应的下标就可以了。
现在问题变为,数组中各值得递推关系如何。
哈哈,n1=1/2;n2=?/n3=?............
#8
1年前这个问题讨论一次了,那个时候是微软的面试题。当时我给出了标准答案……
#9
那你现在怎么就不可以给出呢
#10
在不报废飞机的前提下,我认为需要四架飞机
具体方法为:
首先A和B一起起飞,A为环球航行飞机,B为护送飞机,两架飞机的油都设为T,当A和B走到环球的八分之一时,B把自己的一半油送给A,此时A的油为3/2T,这是A的油刚好够走到全球的3/4处,B沿原路返回。
其次在A和B的反方向,又有两架飞机C和D,全都是满装油T,当C和D反方向飞到环球的八分之一的时候,D把自己的油的一半加给C,C的油为3/2T,D沿原路返回。C遇到A时,是在环球的四分之三处,A的油刚好用尽,C又把1/2T的油的加给A,C和A一起沿A方向飞行,当A和C同时飞回来的是后,C和A的油都刚好用尽.
具体方法为:
首先A和B一起起飞,A为环球航行飞机,B为护送飞机,两架飞机的油都设为T,当A和B走到环球的八分之一时,B把自己的一半油送给A,此时A的油为3/2T,这是A的油刚好够走到全球的3/4处,B沿原路返回。
其次在A和B的反方向,又有两架飞机C和D,全都是满装油T,当C和D反方向飞到环球的八分之一的时候,D把自己的油的一半加给C,C的油为3/2T,D沿原路返回。C遇到A时,是在环球的四分之三处,A的油刚好用尽,C又把1/2T的油的加给A,C和A一起沿A方向飞行,当A和C同时飞回来的是后,C和A的油都刚好用尽.
#11
“B把自己的一半油送给A,此时A的油为3/2T”
不知道楼上的怎么算的
不知道楼上的怎么算的
#12
哦这里我表达的不准确,应该是当B把自己的油给A后,A的油可以飞行全球的3/4
#13
to:龙行天下
同意!
ps:强~
同意!
ps:强~
#14
设每架飞机的最大载油量为T,
#15
to 龙行天下:你的B反方向飞行到1/4s处时,自己的油刚好够返回,根本无法把自己的油给A,所以这样是行不通的
我觉得如果严格的说话,需要三架飞机,
但是飞行的办法和我刚才说的差不多。
我觉得如果严格的说话,需要三架飞机,
但是飞行的办法和我刚才说的差不多。
#16
mark
#17
to wwxsoft(婉儿)
把程序给出来吧
把程序给出来吧
#18
erace99(龙行天下) 的想法是要给了油以后滑行回去。不会报废飞机的。
#19
to wwxsoft(婉儿)
设每架飞机的最大载油量为T,当A和B走到环球的八分之一时,耗了1/4T的油,还有3/4T,A加满也只能加1/4T,也飞不到环球3/4的地方
设每架飞机的最大载油量为T,当A和B走到环球的八分之一时,耗了1/4T的油,还有3/4T,A加满也只能加1/4T,也飞不到环球3/4的地方
#20
婉儿MM以为可以加到3/2T的油
#21
3假飞机5桐油
#22
可能需要16架吧
#23
靠,两架。
第一架装着第二架飞到一半时换第二架飞吧。
题目又没限制飞机不能载飞机的。
第一架装着第二架飞到一半时换第二架飞吧。
题目又没限制飞机不能载飞机的。
#24
我不是以为可以加3/2T的油,你误会了
#25
是我考虑不周
#26
可能需要16架吧
#27
飞机的加油范围应该是S/4处,如果超过了S/4,加油的飞机就飞不回来了,所以在s/4--3*s/4时飞机是加不了油的.
架次 可飞行的路程
一架在飞 :S/2;
二架最多飞 :s/2+s/6
三架 :s/2+s/6+s/18
...
n架 :s/2+s/6+s/18+...+1/3(n-1)*s/2
对n架时求和:A=3*s/4(1-(1/3)的n次方)
n->无穷时,A->3*s/4.
也就是说无解.
架次 可飞行的路程
一架在飞 :S/2;
二架最多飞 :s/2+s/6
三架 :s/2+s/6+s/18
...
n架 :s/2+s/6+s/18+...+1/3(n-1)*s/2
对n架时求和:A=3*s/4(1-(1/3)的n次方)
n->无穷时,A->3*s/4.
也就是说无解.
#28
楼上的, 有这么复杂吗?
在出发的1/4路程一架给他一半油, 那架加油机自己可以回来, 在回来的另一个方向上的1/4处一架, 也是给他一半的油, 那么他就刚好能飞一圈, 而第二架加油机也能自己飞回来.
在出发的1/4路程一架给他一半油, 那架加油机自己可以回来, 在回来的另一个方向上的1/4处一架, 也是给他一半的油, 那么他就刚好能飞一圈, 而第二架加油机也能自己飞回来.
#29
楼上的真搞笑
1/4路程需要消耗一半油
再返回也是1/4路程同样消耗一半油
也就是1/2路程需要消耗全部油还有油给别人吗!!!!?????????
1/4路程需要消耗一半油
再返回也是1/4路程同样消耗一半油
也就是1/2路程需要消耗全部油还有油给别人吗!!!!?????????
#30
同意楼主的算法,不过是5架次而非3架次,(注: 架次是指一架飞机起飞一次算一架次)
wwxsoft(婉儿)的算法不对
wwxsoft(婉儿)的算法不对
#31
0
3 1
2
3 1
2
#32
楼上,1/4给一半油,才飞一半,要长途飞行的飞机,邮箱里还有3/4油,你在给一半,2/4,油箱装不下。^_^
#33
要好多假,至少是3以上
0
3 1
2
0
3 1
2
#34
谁能给出个具体程序
#35
你们那都反方向飞,怎么都行。
问个问题,不许反方向飞,只允许顺时针飞,你们认为飞机能飞到终点吗?
问个问题,不许反方向飞,只允许顺时针飞,你们认为飞机能飞到终点吗?
#36
to tongyongmc(fengyun)
不允许坠毁是不可能的 允许坠毁就好办了 4架起飞 到1/4处死掉2架 另2架满血 如法炮制
1/2 处死掉 1架 留一架满血 这样至少一架就能活着回来了
不允许坠毁是不可能的 允许坠毁就好办了 4架起飞 到1/4处死掉2架 另2架满血 如法炮制
1/2 处死掉 1架 留一架满血 这样至少一架就能活着回来了
#37
to tongyongmc(fengyun)
对不起 刚才说错了 只允许顺时针不坠毁也是可能的
比如 16 架起飞
1/8 处 8架满血 8 架 回航(这些肯定回的去)
1/4 处 4架满血 4 架 回航(这些肯定回的去)
3/8 处 2架满血 2 架 回航(这些回不去,但能到1/8处 只要到1/8 就有人接应 )
1/2 处 1架满血 2 架 回航(这些回不去,但能到1/4处 只要到1/4 就有人接应 再接应到1/8 )
满血的1架 飞到终点
对不起 刚才说错了 只允许顺时针不坠毁也是可能的
比如 16 架起飞
1/8 处 8架满血 8 架 回航(这些肯定回的去)
1/4 处 4架满血 4 架 回航(这些肯定回的去)
3/8 处 2架满血 2 架 回航(这些回不去,但能到1/8处 只要到1/8 就有人接应 )
1/2 处 1架满血 2 架 回航(这些回不去,但能到1/4处 只要到1/4 就有人接应 再接应到1/8 )
满血的1架 飞到终点
#38
开始从起点o起飞三架飞机a1,a2,a3;当飞到1/8S时,a1,a2,a3都剩3/4油。a3把1/2的油分别给a1,a2,此时a1,a2油满。a3飞回。
继续飞到1/4S时,a1,a2剩3/4油,a2将1/4油给a1,此时a1油满,a2还有1/2油,飞回。并且在这个时候a4,a5,a6从o起点反方向起飞。
当a1飞到3/8S时,a1还有3/4油,a6将1/2油分别给a5,a4。此时a5,a4有满箱油,a6有1/4油,a6飞回。
当a1飞到1/2S时,a1有1/2油,a4,a5剩3/4油,a5将1/4油给a4,此时a4油满且飞了1/4S,a5还有1/2油,飞回。并且此时a7,a8,a9从起点o反方向起飞。
当a1飞到5/8时,a1剩1/4油,a4飞了3/8S,a4剩3/4油,a1与a4相遇,a4将1/4油给a1,a1,a4都有1/2油。此时a7,a8,a9都剩3/4油。A9把1/2的油分别给a8,a7,此时a8,a7油满,飞了1/8S。A9飞回。
当a1飞到3/4时,a1,a4剩1/4油,并且与a8,a7相遇,a8,a7剩3/4油。a8给a1 1/4油,a7给a4 1/4油,此时,a1,a4,a7,a8都有1/2油,并且a1就剩1/4S就到终点,a7,a8调头,和a1,a4一起飞向o点,这时,a1正好飞行了一圈,飞了1S路程。
总共用了9架次。
继续飞到1/4S时,a1,a2剩3/4油,a2将1/4油给a1,此时a1油满,a2还有1/2油,飞回。并且在这个时候a4,a5,a6从o起点反方向起飞。
当a1飞到3/8S时,a1还有3/4油,a6将1/2油分别给a5,a4。此时a5,a4有满箱油,a6有1/4油,a6飞回。
当a1飞到1/2S时,a1有1/2油,a4,a5剩3/4油,a5将1/4油给a4,此时a4油满且飞了1/4S,a5还有1/2油,飞回。并且此时a7,a8,a9从起点o反方向起飞。
当a1飞到5/8时,a1剩1/4油,a4飞了3/8S,a4剩3/4油,a1与a4相遇,a4将1/4油给a1,a1,a4都有1/2油。此时a7,a8,a9都剩3/4油。A9把1/2的油分别给a8,a7,此时a8,a7油满,飞了1/8S。A9飞回。
当a1飞到3/4时,a1,a4剩1/4油,并且与a8,a7相遇,a8,a7剩3/4油。a8给a1 1/4油,a7给a4 1/4油,此时,a1,a4,a7,a8都有1/2油,并且a1就剩1/4S就到终点,a7,a8调头,和a1,a4一起飞向o点,这时,a1正好飞行了一圈,飞了1S路程。
总共用了9架次。
#39
我认为可以反方向飞,并且不能等到飞机没有油了在加油,这是不行的。
#40
如果只允许顺时针飞,而且还不能让任何飞机坠毁的话,应该是不可能飞到终点的。
n架飞机能飞最远距离应该是 1-1/(n+1)(注:这里没有考虑执行任务的那架飞机返航所需的油)
#41
如果只允许顺时针飞,而且还不能让任何飞机坠毁的话,应该是不可能飞到终点的。
n架飞机能飞最远距离应该是 1-1/(n+1)(注:这里没有考虑执行任务的那架飞机返航所需的油)
#42
我也是这么想,
如果允许逆时针飞行,那么这题就简单了。
但如果不允许逆时针飞行,并在不允许坠机的情况下(:)),我认为是不可能飞到终点的。
可惜给不出算法来。
如果允许逆时针飞行,那么这题就简单了。
但如果不允许逆时针飞行,并在不允许坠机的情况下(:)),我认为是不可能飞到终点的。
可惜给不出算法来。
#43
二楼:
回复人: jinder22(jinder22) ( ) 信誉:100 2005-3-29 11:31:01 得分: 0
正解!!!!!!
回复人: jinder22(jinder22) ( ) 信誉:100 2005-3-29 11:31:01 得分: 0
正解!!!!!!
#44
假如不允许损失飞机的话,我同意star_wang() 的看法,这个题目无解。
#45
美国第七舰队的标准答案:只要保证人的安全,我们不在乎多少油钱,伊拉克会给我们充足的油.
#46
各位讨论了半天,我认真的考虑了一下,在只允许顺时针飞行,而且不允许坠毁的情况,在逻辑上是可能的,我现在还无法用程序来实现,但是我可以从逻辑上解释这个问题:
一架飞机只能在一次飞行的最远距离是s/2,一次载油为T.所以首先我们可以断定在s/2处需要还有返航的飞机,那么我们的问题就转化成了,一架飞机A用于环球飞行.A从起飞到s/2处(中途不加油),刚好用完油.这里要解决的是,用 N 架次的飞机能在s/2处再提供T吨油.这个问题应该是可行的.
我们不前面的s/2分为两段及s/4处,我们可以保证在s/4处有一批飞机是满油的,问题就简化成了,能是s/4处做为飞机场的起点,再在3/8处分段,我们可以保证在3/8处又有一批满油的飞机,比如有n架,在保证自己能飞回s/4处剩下的油全部给A,以让得到T吨,问题在逻辑上就解决了.
问题可以逆向求解,3/8处有两架满油,在s/2处各提供T/2吨给A,返行到s/4处,需要前面接应的飞机提供T吨油让这两架飞机返行,..依次向前推..问题和前面一样拉...西西
各位看看,,是不是有点可行性呀..
一架飞机只能在一次飞行的最远距离是s/2,一次载油为T.所以首先我们可以断定在s/2处需要还有返航的飞机,那么我们的问题就转化成了,一架飞机A用于环球飞行.A从起飞到s/2处(中途不加油),刚好用完油.这里要解决的是,用 N 架次的飞机能在s/2处再提供T吨油.这个问题应该是可行的.
我们不前面的s/2分为两段及s/4处,我们可以保证在s/4处有一批飞机是满油的,问题就简化成了,能是s/4处做为飞机场的起点,再在3/8处分段,我们可以保证在3/8处又有一批满油的飞机,比如有n架,在保证自己能飞回s/4处剩下的油全部给A,以让得到T吨,问题在逻辑上就解决了.
问题可以逆向求解,3/8处有两架满油,在s/2处各提供T/2吨给A,返行到s/4处,需要前面接应的飞机提供T吨油让这两架飞机返行,..依次向前推..问题和前面一样拉...西西
各位看看,,是不是有点可行性呀..
#47
如果只允许顺时针飞,而且还不能让任何飞机坠毁的话,是不可能飞到终点的。
n架飞机能飞最远距离应该是 1-1/(n+1)(注:这里没有考虑执行任务的那架飞机返航所需的油)
具体的推算如下
飞机架数 能飞行最远距离
1 1/2
2 1/2+1/6 两架同时起飞,飞到1/6时,加满执行任务的飞机
另一架起飞
3 1/2+1/8+1/8 三架同时起飞,飞到1/8时,其中一架将另外两架
加满并返回,满的两架又飞1/8,加满执行任务的
并自己返回
4 1/2+1/10+1/10+1/10
…… ……
n 1-1/(n+1)
n架飞机能飞最远距离应该是 1-1/(n+1)(注:这里没有考虑执行任务的那架飞机返航所需的油)
具体的推算如下
飞机架数 能飞行最远距离
1 1/2
2 1/2+1/6 两架同时起飞,飞到1/6时,加满执行任务的飞机
另一架起飞
3 1/2+1/8+1/8 三架同时起飞,飞到1/8时,其中一架将另外两架
加满并返回,满的两架又飞1/8,加满执行任务的
并自己返回
4 1/2+1/10+1/10+1/10
…… ……
n 1-1/(n+1)
#48
6架次就可以了
顺时针起飞3架包括执行任务的,逆时针起飞3架做接应,2个方向的加油方法一样,逆时针方向的最后一架分一半油给执行任务的飞机后和其一起飞回。
我只称述顺时针方向的加油方法:
a,vip,b 3机飞到1/8圈的时候,都余3/4的油,b机各分1/4的油给vip机和a机,此两机就满箱了,b机还余1/4刚好飞回。vip和a飞到1/4圈的时候,都余3/4的油,a机分1/4油给vip机,自己余1/2油刚好飞回,vip满箱继续飞行,可以飞到3/4圈,此时刚好逆时针接应的飞机满箱,飞一半,一起飞回基地。
over。
顺时针起飞3架包括执行任务的,逆时针起飞3架做接应,2个方向的加油方法一样,逆时针方向的最后一架分一半油给执行任务的飞机后和其一起飞回。
我只称述顺时针方向的加油方法:
a,vip,b 3机飞到1/8圈的时候,都余3/4的油,b机各分1/4的油给vip机和a机,此两机就满箱了,b机还余1/4刚好飞回。vip和a飞到1/4圈的时候,都余3/4的油,a机分1/4油给vip机,自己余1/2油刚好飞回,vip满箱继续飞行,可以飞到3/4圈,此时刚好逆时针接应的飞机满箱,飞一半,一起飞回基地。
over。
#49
6架次
#50
一定要可以反方向飞
#1
一下是我的想法 不知是否最优 求高手算法实现
共3架飞机:A,B1,B2 A机用于环游,B1,B2用于护送,接应,全过程如下:
1.A,B1,B2,飞机同时从机场起飞.
2.当飞行到1/8S时,3架飞机都还有3/4的油,B2分别将1/4的油输给A和B1.这样A和B1都为全满的油,B2还剩下1/4,B2返航.
3.A和B1飞机继续飞行,至1/4S时,这时A和B1都剩下3/4的油,B1将1/4的油输送给A,这样B1有1/2的油,返航,A油全满,继续飞行.
4.当A飞机飞到1/2S时,这时A飞机有1/2的油.B1从机场从反方向起飞5.当A飞机飞到3/4S时,B1飞机也同时到达,B1现在剩下1/2的油,而A则没油了,B1将1/4的油给A,同时两飞机均返航,这时,从机场起飞B2飞机,反方向飞行.
6.当A,B1,B2飞机在7/8S处相遇时,A和B1均没油了,B2有3/4的油,C2分别给C1和A各1/4油后,3飞机同时返航,到机场时,均油尽.
共3架飞机:A,B1,B2 A机用于环游,B1,B2用于护送,接应,全过程如下:
1.A,B1,B2,飞机同时从机场起飞.
2.当飞行到1/8S时,3架飞机都还有3/4的油,B2分别将1/4的油输给A和B1.这样A和B1都为全满的油,B2还剩下1/4,B2返航.
3.A和B1飞机继续飞行,至1/4S时,这时A和B1都剩下3/4的油,B1将1/4的油输送给A,这样B1有1/2的油,返航,A油全满,继续飞行.
4.当A飞机飞到1/2S时,这时A飞机有1/2的油.B1从机场从反方向起飞5.当A飞机飞到3/4S时,B1飞机也同时到达,B1现在剩下1/2的油,而A则没油了,B1将1/4的油给A,同时两飞机均返航,这时,从机场起飞B2飞机,反方向飞行.
6.当A,B1,B2飞机在7/8S处相遇时,A和B1均没油了,B2有3/4的油,C2分别给C1和A各1/4油后,3飞机同时返航,到机场时,均油尽.
#2
二架次
假设以A做环球飞行,B作为空中加油机,(附加条件,加油时间和加油中的油耗损失忽略不计)
1.A,B同时起飞,当飞至1/4S时,B把半油箱油加入到A中,这时B可安全返般(即B以半油箱飞1/4的距离),A这时还剩满箱油,可以飞至3/4S处
2.当A飞至1/2S时,B飞机从反方向飞行,当A飞到3/4S时,B飞机刚才到达,B把半箱油加入到A中,A,B同时到达终点
假设以A做环球飞行,B作为空中加油机,(附加条件,加油时间和加油中的油耗损失忽略不计)
1.A,B同时起飞,当飞至1/4S时,B把半油箱油加入到A中,这时B可安全返般(即B以半油箱飞1/4的距离),A这时还剩满箱油,可以飞至3/4S处
2.当A飞至1/2S时,B飞机从反方向飞行,当A飞到3/4S时,B飞机刚才到达,B把半箱油加入到A中,A,B同时到达终点
#3
我就不知道能不能反方向航行,好像也没有规定不允许。
to 龙行天下,你在第一步的时候B把半箱油都给了A,那他自己就没油了。第二步也是哦。损失了两架飞机。
:)
to 龙行天下,你在第一步的时候B把半箱油都给了A,那他自己就没油了。第二步也是哦。损失了两架飞机。
:)
#4
^_^ 首次听闻
#5
中国的很多题目(不知道国外什么样),题面总是默许了很多前提条件和约束条件,如果真的像搞科研一样严谨,出题者又说我们是钻牛角尖,真是没办法.
比如说这个题,派个加油机在航行过一半时加满不就完成任务!
比如说这个题,派个加油机在航行过一半时加满不就完成任务!
#6
面试题考这个能有多少人短时间内回答出来啊?
#7
这是个数学问题吧。
建个数组,一架,2架,3架,。。。。。n架能飞多远,带入s,找到对应的下标就可以了。
现在问题变为,数组中各值得递推关系如何。
哈哈,n1=1/2;n2=?/n3=?............
建个数组,一架,2架,3架,。。。。。n架能飞多远,带入s,找到对应的下标就可以了。
现在问题变为,数组中各值得递推关系如何。
哈哈,n1=1/2;n2=?/n3=?............
#8
1年前这个问题讨论一次了,那个时候是微软的面试题。当时我给出了标准答案……
#9
那你现在怎么就不可以给出呢
#10
在不报废飞机的前提下,我认为需要四架飞机
具体方法为:
首先A和B一起起飞,A为环球航行飞机,B为护送飞机,两架飞机的油都设为T,当A和B走到环球的八分之一时,B把自己的一半油送给A,此时A的油为3/2T,这是A的油刚好够走到全球的3/4处,B沿原路返回。
其次在A和B的反方向,又有两架飞机C和D,全都是满装油T,当C和D反方向飞到环球的八分之一的时候,D把自己的油的一半加给C,C的油为3/2T,D沿原路返回。C遇到A时,是在环球的四分之三处,A的油刚好用尽,C又把1/2T的油的加给A,C和A一起沿A方向飞行,当A和C同时飞回来的是后,C和A的油都刚好用尽.
具体方法为:
首先A和B一起起飞,A为环球航行飞机,B为护送飞机,两架飞机的油都设为T,当A和B走到环球的八分之一时,B把自己的一半油送给A,此时A的油为3/2T,这是A的油刚好够走到全球的3/4处,B沿原路返回。
其次在A和B的反方向,又有两架飞机C和D,全都是满装油T,当C和D反方向飞到环球的八分之一的时候,D把自己的油的一半加给C,C的油为3/2T,D沿原路返回。C遇到A时,是在环球的四分之三处,A的油刚好用尽,C又把1/2T的油的加给A,C和A一起沿A方向飞行,当A和C同时飞回来的是后,C和A的油都刚好用尽.
#11
“B把自己的一半油送给A,此时A的油为3/2T”
不知道楼上的怎么算的
不知道楼上的怎么算的
#12
哦这里我表达的不准确,应该是当B把自己的油给A后,A的油可以飞行全球的3/4
#13
to:龙行天下
同意!
ps:强~
同意!
ps:强~
#14
设每架飞机的最大载油量为T,
#15
to 龙行天下:你的B反方向飞行到1/4s处时,自己的油刚好够返回,根本无法把自己的油给A,所以这样是行不通的
我觉得如果严格的说话,需要三架飞机,
但是飞行的办法和我刚才说的差不多。
我觉得如果严格的说话,需要三架飞机,
但是飞行的办法和我刚才说的差不多。
#16
mark
#17
to wwxsoft(婉儿)
把程序给出来吧
把程序给出来吧
#18
erace99(龙行天下) 的想法是要给了油以后滑行回去。不会报废飞机的。
#19
to wwxsoft(婉儿)
设每架飞机的最大载油量为T,当A和B走到环球的八分之一时,耗了1/4T的油,还有3/4T,A加满也只能加1/4T,也飞不到环球3/4的地方
设每架飞机的最大载油量为T,当A和B走到环球的八分之一时,耗了1/4T的油,还有3/4T,A加满也只能加1/4T,也飞不到环球3/4的地方
#20
婉儿MM以为可以加到3/2T的油
#21
3假飞机5桐油
#22
可能需要16架吧
#23
靠,两架。
第一架装着第二架飞到一半时换第二架飞吧。
题目又没限制飞机不能载飞机的。
第一架装着第二架飞到一半时换第二架飞吧。
题目又没限制飞机不能载飞机的。
#24
我不是以为可以加3/2T的油,你误会了
#25
是我考虑不周
#26
可能需要16架吧
#27
飞机的加油范围应该是S/4处,如果超过了S/4,加油的飞机就飞不回来了,所以在s/4--3*s/4时飞机是加不了油的.
架次 可飞行的路程
一架在飞 :S/2;
二架最多飞 :s/2+s/6
三架 :s/2+s/6+s/18
...
n架 :s/2+s/6+s/18+...+1/3(n-1)*s/2
对n架时求和:A=3*s/4(1-(1/3)的n次方)
n->无穷时,A->3*s/4.
也就是说无解.
架次 可飞行的路程
一架在飞 :S/2;
二架最多飞 :s/2+s/6
三架 :s/2+s/6+s/18
...
n架 :s/2+s/6+s/18+...+1/3(n-1)*s/2
对n架时求和:A=3*s/4(1-(1/3)的n次方)
n->无穷时,A->3*s/4.
也就是说无解.
#28
楼上的, 有这么复杂吗?
在出发的1/4路程一架给他一半油, 那架加油机自己可以回来, 在回来的另一个方向上的1/4处一架, 也是给他一半的油, 那么他就刚好能飞一圈, 而第二架加油机也能自己飞回来.
在出发的1/4路程一架给他一半油, 那架加油机自己可以回来, 在回来的另一个方向上的1/4处一架, 也是给他一半的油, 那么他就刚好能飞一圈, 而第二架加油机也能自己飞回来.
#29
楼上的真搞笑
1/4路程需要消耗一半油
再返回也是1/4路程同样消耗一半油
也就是1/2路程需要消耗全部油还有油给别人吗!!!!?????????
1/4路程需要消耗一半油
再返回也是1/4路程同样消耗一半油
也就是1/2路程需要消耗全部油还有油给别人吗!!!!?????????
#30
同意楼主的算法,不过是5架次而非3架次,(注: 架次是指一架飞机起飞一次算一架次)
wwxsoft(婉儿)的算法不对
wwxsoft(婉儿)的算法不对
#31
0
3 1
2
3 1
2
#32
楼上,1/4给一半油,才飞一半,要长途飞行的飞机,邮箱里还有3/4油,你在给一半,2/4,油箱装不下。^_^
#33
要好多假,至少是3以上
0
3 1
2
0
3 1
2
#34
谁能给出个具体程序
#35
你们那都反方向飞,怎么都行。
问个问题,不许反方向飞,只允许顺时针飞,你们认为飞机能飞到终点吗?
问个问题,不许反方向飞,只允许顺时针飞,你们认为飞机能飞到终点吗?
#36
to tongyongmc(fengyun)
不允许坠毁是不可能的 允许坠毁就好办了 4架起飞 到1/4处死掉2架 另2架满血 如法炮制
1/2 处死掉 1架 留一架满血 这样至少一架就能活着回来了
不允许坠毁是不可能的 允许坠毁就好办了 4架起飞 到1/4处死掉2架 另2架满血 如法炮制
1/2 处死掉 1架 留一架满血 这样至少一架就能活着回来了
#37
to tongyongmc(fengyun)
对不起 刚才说错了 只允许顺时针不坠毁也是可能的
比如 16 架起飞
1/8 处 8架满血 8 架 回航(这些肯定回的去)
1/4 处 4架满血 4 架 回航(这些肯定回的去)
3/8 处 2架满血 2 架 回航(这些回不去,但能到1/8处 只要到1/8 就有人接应 )
1/2 处 1架满血 2 架 回航(这些回不去,但能到1/4处 只要到1/4 就有人接应 再接应到1/8 )
满血的1架 飞到终点
对不起 刚才说错了 只允许顺时针不坠毁也是可能的
比如 16 架起飞
1/8 处 8架满血 8 架 回航(这些肯定回的去)
1/4 处 4架满血 4 架 回航(这些肯定回的去)
3/8 处 2架满血 2 架 回航(这些回不去,但能到1/8处 只要到1/8 就有人接应 )
1/2 处 1架满血 2 架 回航(这些回不去,但能到1/4处 只要到1/4 就有人接应 再接应到1/8 )
满血的1架 飞到终点
#38
开始从起点o起飞三架飞机a1,a2,a3;当飞到1/8S时,a1,a2,a3都剩3/4油。a3把1/2的油分别给a1,a2,此时a1,a2油满。a3飞回。
继续飞到1/4S时,a1,a2剩3/4油,a2将1/4油给a1,此时a1油满,a2还有1/2油,飞回。并且在这个时候a4,a5,a6从o起点反方向起飞。
当a1飞到3/8S时,a1还有3/4油,a6将1/2油分别给a5,a4。此时a5,a4有满箱油,a6有1/4油,a6飞回。
当a1飞到1/2S时,a1有1/2油,a4,a5剩3/4油,a5将1/4油给a4,此时a4油满且飞了1/4S,a5还有1/2油,飞回。并且此时a7,a8,a9从起点o反方向起飞。
当a1飞到5/8时,a1剩1/4油,a4飞了3/8S,a4剩3/4油,a1与a4相遇,a4将1/4油给a1,a1,a4都有1/2油。此时a7,a8,a9都剩3/4油。A9把1/2的油分别给a8,a7,此时a8,a7油满,飞了1/8S。A9飞回。
当a1飞到3/4时,a1,a4剩1/4油,并且与a8,a7相遇,a8,a7剩3/4油。a8给a1 1/4油,a7给a4 1/4油,此时,a1,a4,a7,a8都有1/2油,并且a1就剩1/4S就到终点,a7,a8调头,和a1,a4一起飞向o点,这时,a1正好飞行了一圈,飞了1S路程。
总共用了9架次。
继续飞到1/4S时,a1,a2剩3/4油,a2将1/4油给a1,此时a1油满,a2还有1/2油,飞回。并且在这个时候a4,a5,a6从o起点反方向起飞。
当a1飞到3/8S时,a1还有3/4油,a6将1/2油分别给a5,a4。此时a5,a4有满箱油,a6有1/4油,a6飞回。
当a1飞到1/2S时,a1有1/2油,a4,a5剩3/4油,a5将1/4油给a4,此时a4油满且飞了1/4S,a5还有1/2油,飞回。并且此时a7,a8,a9从起点o反方向起飞。
当a1飞到5/8时,a1剩1/4油,a4飞了3/8S,a4剩3/4油,a1与a4相遇,a4将1/4油给a1,a1,a4都有1/2油。此时a7,a8,a9都剩3/4油。A9把1/2的油分别给a8,a7,此时a8,a7油满,飞了1/8S。A9飞回。
当a1飞到3/4时,a1,a4剩1/4油,并且与a8,a7相遇,a8,a7剩3/4油。a8给a1 1/4油,a7给a4 1/4油,此时,a1,a4,a7,a8都有1/2油,并且a1就剩1/4S就到终点,a7,a8调头,和a1,a4一起飞向o点,这时,a1正好飞行了一圈,飞了1S路程。
总共用了9架次。
#39
我认为可以反方向飞,并且不能等到飞机没有油了在加油,这是不行的。
#40
如果只允许顺时针飞,而且还不能让任何飞机坠毁的话,应该是不可能飞到终点的。
n架飞机能飞最远距离应该是 1-1/(n+1)(注:这里没有考虑执行任务的那架飞机返航所需的油)
#41
如果只允许顺时针飞,而且还不能让任何飞机坠毁的话,应该是不可能飞到终点的。
n架飞机能飞最远距离应该是 1-1/(n+1)(注:这里没有考虑执行任务的那架飞机返航所需的油)
#42
我也是这么想,
如果允许逆时针飞行,那么这题就简单了。
但如果不允许逆时针飞行,并在不允许坠机的情况下(:)),我认为是不可能飞到终点的。
可惜给不出算法来。
如果允许逆时针飞行,那么这题就简单了。
但如果不允许逆时针飞行,并在不允许坠机的情况下(:)),我认为是不可能飞到终点的。
可惜给不出算法来。
#43
二楼:
回复人: jinder22(jinder22) ( ) 信誉:100 2005-3-29 11:31:01 得分: 0
正解!!!!!!
回复人: jinder22(jinder22) ( ) 信誉:100 2005-3-29 11:31:01 得分: 0
正解!!!!!!
#44
假如不允许损失飞机的话,我同意star_wang() 的看法,这个题目无解。
#45
美国第七舰队的标准答案:只要保证人的安全,我们不在乎多少油钱,伊拉克会给我们充足的油.
#46
各位讨论了半天,我认真的考虑了一下,在只允许顺时针飞行,而且不允许坠毁的情况,在逻辑上是可能的,我现在还无法用程序来实现,但是我可以从逻辑上解释这个问题:
一架飞机只能在一次飞行的最远距离是s/2,一次载油为T.所以首先我们可以断定在s/2处需要还有返航的飞机,那么我们的问题就转化成了,一架飞机A用于环球飞行.A从起飞到s/2处(中途不加油),刚好用完油.这里要解决的是,用 N 架次的飞机能在s/2处再提供T吨油.这个问题应该是可行的.
我们不前面的s/2分为两段及s/4处,我们可以保证在s/4处有一批飞机是满油的,问题就简化成了,能是s/4处做为飞机场的起点,再在3/8处分段,我们可以保证在3/8处又有一批满油的飞机,比如有n架,在保证自己能飞回s/4处剩下的油全部给A,以让得到T吨,问题在逻辑上就解决了.
问题可以逆向求解,3/8处有两架满油,在s/2处各提供T/2吨给A,返行到s/4处,需要前面接应的飞机提供T吨油让这两架飞机返行,..依次向前推..问题和前面一样拉...西西
各位看看,,是不是有点可行性呀..
一架飞机只能在一次飞行的最远距离是s/2,一次载油为T.所以首先我们可以断定在s/2处需要还有返航的飞机,那么我们的问题就转化成了,一架飞机A用于环球飞行.A从起飞到s/2处(中途不加油),刚好用完油.这里要解决的是,用 N 架次的飞机能在s/2处再提供T吨油.这个问题应该是可行的.
我们不前面的s/2分为两段及s/4处,我们可以保证在s/4处有一批飞机是满油的,问题就简化成了,能是s/4处做为飞机场的起点,再在3/8处分段,我们可以保证在3/8处又有一批满油的飞机,比如有n架,在保证自己能飞回s/4处剩下的油全部给A,以让得到T吨,问题在逻辑上就解决了.
问题可以逆向求解,3/8处有两架满油,在s/2处各提供T/2吨给A,返行到s/4处,需要前面接应的飞机提供T吨油让这两架飞机返行,..依次向前推..问题和前面一样拉...西西
各位看看,,是不是有点可行性呀..
#47
如果只允许顺时针飞,而且还不能让任何飞机坠毁的话,是不可能飞到终点的。
n架飞机能飞最远距离应该是 1-1/(n+1)(注:这里没有考虑执行任务的那架飞机返航所需的油)
具体的推算如下
飞机架数 能飞行最远距离
1 1/2
2 1/2+1/6 两架同时起飞,飞到1/6时,加满执行任务的飞机
另一架起飞
3 1/2+1/8+1/8 三架同时起飞,飞到1/8时,其中一架将另外两架
加满并返回,满的两架又飞1/8,加满执行任务的
并自己返回
4 1/2+1/10+1/10+1/10
…… ……
n 1-1/(n+1)
n架飞机能飞最远距离应该是 1-1/(n+1)(注:这里没有考虑执行任务的那架飞机返航所需的油)
具体的推算如下
飞机架数 能飞行最远距离
1 1/2
2 1/2+1/6 两架同时起飞,飞到1/6时,加满执行任务的飞机
另一架起飞
3 1/2+1/8+1/8 三架同时起飞,飞到1/8时,其中一架将另外两架
加满并返回,满的两架又飞1/8,加满执行任务的
并自己返回
4 1/2+1/10+1/10+1/10
…… ……
n 1-1/(n+1)
#48
6架次就可以了
顺时针起飞3架包括执行任务的,逆时针起飞3架做接应,2个方向的加油方法一样,逆时针方向的最后一架分一半油给执行任务的飞机后和其一起飞回。
我只称述顺时针方向的加油方法:
a,vip,b 3机飞到1/8圈的时候,都余3/4的油,b机各分1/4的油给vip机和a机,此两机就满箱了,b机还余1/4刚好飞回。vip和a飞到1/4圈的时候,都余3/4的油,a机分1/4油给vip机,自己余1/2油刚好飞回,vip满箱继续飞行,可以飞到3/4圈,此时刚好逆时针接应的飞机满箱,飞一半,一起飞回基地。
over。
顺时针起飞3架包括执行任务的,逆时针起飞3架做接应,2个方向的加油方法一样,逆时针方向的最后一架分一半油给执行任务的飞机后和其一起飞回。
我只称述顺时针方向的加油方法:
a,vip,b 3机飞到1/8圈的时候,都余3/4的油,b机各分1/4的油给vip机和a机,此两机就满箱了,b机还余1/4刚好飞回。vip和a飞到1/4圈的时候,都余3/4的油,a机分1/4油给vip机,自己余1/2油刚好飞回,vip满箱继续飞行,可以飞到3/4圈,此时刚好逆时针接应的飞机满箱,飞一半,一起飞回基地。
over。
#49
6架次
#50
一定要可以反方向飞