飞机绕地球环行问题
飛機繞地球環行問題
?
題目:
?已知每架飛機有一個油箱,飛機之間可以相互加油,一整油箱的油可以供一架飛機繞地球飛行半圈。為使至少一架飛機繞地球一圈回到飛機起飛的機場,至少需要使用幾架飛機,飛行幾個架次?
?所有飛機從同一飛機場起飛,而且必須安全返回機場,不允許中途降落,一架飛機起飛一次算作一架次,加油時間可以忽略。
?
?
計算法(johnny原創):
?設飛機油箱容量為V,繞地球飛行一圈的總行程為L,初始時有三架飛機A/B/C,飛機耗油情況為2V/L (油量/行程)。
?
?設第一段三個飛機共同飛過的路程為s1.則:
?
C可加給他人的油(考慮到自身返回):
??V – 2 * s1 * 2V/L
?該值必須大于0,解的s1 < L/4 (即在0度到90度之間)
?
A/B總耗油:
??s1 * 2V/L * 2
?
當“C可加給他人的油”等于“A/B總耗油量”時, C的油得到了最大程度的利用。即:
?V – 2 * S1 * 2V/L = s1 * 2V/L *2
解得:
?s1 = L/8
也就是說在s1 = L/8時C返回,同時將A/B兩飛機消耗的油量(分別為V/4)補滿即可。
?
【現在C完成了使命,剩下了A和B。】
?
使用同樣的方法:
?
在兩架飛機分別走了L/8之后,假設兩架飛機又共同飛行了s2,則:
?
A耗油:
?s2 * 2V / L
?
B剩油(考慮返回):
?V – (L/8 + 2 * s2) * 2V / L
?B剩油應該大于0,解得 s2 < 7/16L
當“A耗油”與“B剩油”相等時B返回,B的油得到了最大程度的利用。即
?s2 * 2V / L = V – (L/8 + 2 * s2) * 2V / L
解得
?s2 = L/8
?(相當于AB再共同飛行45度后B返航并將所有的剩油交給A,A油滿)。
?
這樣A在已經走了45度,又走了 45度的情況下還能夠再走180度,離目標還差90度。
使用同樣的方法即能實現飛機A的環球飛行。
?
共使用三架飛機,五架次。
?
?
轉載于:https://www.cnblogs.com/johnpher/archive/2011/12/25/2570589.html
總結
- 上一篇: 【6.1】python中的变量是什么
- 下一篇: Ruby: 延迟计算与优化