某航空公司有一个环球飞行计划,但有下列条件:每个飞机只有一个油箱,飞机之间可以相互加油(没有加油机);一箱油可供一架飞机绕地球飞半圈,为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架次飞机(包括绕地球一周的那架在内)?注意:所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场,加油时间可以忽略不计。
要求用代码实现。

解决方案 »

  1.   

    Thoadore Bagwell,想不出来啊!给个答案吧!
      

  2.   

    应该是5架,A,B,C,D,E,飞到1/4的时候A->B,E->D。1/2的时候B->C,D->C此时C油箱加满。
    谁能给下实现代码
      

  3.   

    编码还是基于怎么分析这个问题
    理解不同抽象出来模型也不一样
    能google的最多的是5飞机5架次(5架1次)的编码
    其实还有3飞机5架次(1架1次+2架2次)的编码,这个复杂点.
    不过刚才还看到了逆天的2飞机2架次的编码,虽说稍微有点钻题目漏洞<( ̄︶ ̄)/
      

  4.   

    才发现题里面说的是几架次  -0-  不能修改自己帖子..汗 刚来csdn
      

  5.   

    google吧,我都忘记在哪儿了.
    代码是用C++实现的,不过抽象的过程很值得一看,特别是3飞机5架次的,考虑得很完整,当然也更复杂些.2飞机2架次那个的编码就不用找了,作者理解得和我们不一样而已,因为他让一架飞机拖着另一架飞〈(_ _)〉 
      

  6.   


    class airplane{
    public static void main(String[] args){
    int count=1;          //飞到终点飞机的加油次数,start=1/3时已经加油一次。
    double start=1/3;     //第一次在油箱用完1/3时加油。
    int sum;do{
    count++;
    }             //飞到终点飞机的加油的次数。   
    while(
    start+=start*(2/3)   //以后每次加满油后在前一次加油的2/3油箱时加油。
    )do{
    for(int i=0;i<=count;i++)
    sum+=i;                       //所有加油次数,每加一次油就有一架飞机返回。 
    sum=sum+1;
    }                   //所有的飞机架数。
    while(start==1)          //直到飞机飞到1/2圈,也就是start==1时,所有加油完毕,最后一架飞机可以飞到终点System.out.print(sum);
    }
    }
      

  7.   


    class airplane{ 
    public static void main(String[] args){ 
    int count=1;                 //飞到终点飞机的加油次数,start=1/3时已经加油一次。 
    double start=1/3;            //第一次在油箱用完1/3时加油。 
    int sum; do{ 
    count++;                     //飞到终点飞机的加油的次数。
    }  
    while( 
    start+=start*(2/3)           //以后每次加满油后在前一次加油的2/3油箱时加油。 
    ) do{ 
    for(int i=0;i <=count;i++) 
    sum+=i;                      //所有加油次数,每加一次油就有一架飞机返回。 
    sum=sum+1;                   //所有的飞机架数。

    while(start==1)          //直到飞机飞到1/2圈,也就是start==1时,所有加油完毕,最后一架飞机可以飞到终点 System.out.print(sum); 

    }
      

  8.   


    class airplane{ 
    public static void main(String[] args){ 
    int count=1;                 //飞到终点飞机的加油次数,start=1/3时已经加油一次。 
    double start=1/3;            //第一次在油箱用完1/3时加油。 
    int sum; do{ 
    count++;                     //飞到终点飞机的加油的次数。
    }  
    while( 
    start+=start*(2/3)           //以后每次加满油后在前一次加油的2/3油箱时加油。 
    ) do{ 
    for(int i=0;i <=count;i++) 
    sum+=i;                      //所有加油次数,每加一次油就有一架飞机返回。 
    sum=sum+1;                   //所有的飞机架数。

    while(start==1)          //直到飞机飞到1/2圈,也就是start==1时,所有加油完毕,最后一架飞机可以飞到终点 System.out.print(sum); 

    }这个能实现么???