jingmingblog@BlogJava

  语源科技BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  7 随笔 :: 0 文章 :: 2 评论 :: 0 Trackbacks

在面试时经常会遇到一些貌似考查数学能力的问题,其时这些问题实际是考查你是否有很清晰的程序设计思想,即用程序设计的思想来处理现实问题的能力。

之前见到过一个运输问题,问题如下:

现有1辆车,10桶油,车自带一油箱,油箱容量恰为一油桶容量,每一桶油可以让车跑1公里,而车上每次只能带一个油桶,初始条件为油桶和车现在同一起跑位置,车上油箱中满油,而油桶里的油可以倒到车的油箱,反之亦可以。问用JAVA实现这个过程,求出车可以用这些油最多跑多远。

这个题在数学里属于优化类的题目,但是这个题出现在面试的时候,那么个人认为这个题的目的不是考查你的数学能力,加之用JAVA实现,显然它考查的是程序设计能力。故把这个问题的模型进行抽象化为JAVA中的递归问题。

思路:可以考虑每次让车用一桶油将剩余油向前运送一定距离,这样就可以用递归方法求解。用JAVA实现如下:

 1 int  bucketNum  =   11 ; // 初始油问题为11桶(加油箱中油)
 2 int  distance  =   0 ; // 车的运输距离
 3 public   int  transit( int  bucketNum )
 4 {
 5   if (bucketNum == 2 )
 6   {
 7   distance  +=   2 ; // 如仅剩两桶油可以直接跑完
 8    return  distance;
 9  }

10   else
11   {
12   distance  +=   1 / ( 2 * bucketNum  -   3 ); // 车用一桶油把其余油向前运送的距离
13   distance  +=  transit(bucketNum -- );
14  }

15 }


 

posted on 2006-06-06 01:22 jingming 阅读(599) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: