蚂蚁题



/**
 * 题目:
 * 有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。
 * 木杆很细,不能同时通过一只蚂蚁。
 * 开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。
 * 当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。
 * 假设蚂蚁们每秒钟可以走一厘米的距离。
 * 编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
 * 
 * 
@author lupp
 *
 
*/

public   class  AntMoveQuick  {
    
public static void main(String[] args){
        
int[] ants = {3,7,11,17,23};
        
int length = 27;
        
int temp = 27;
        
int min = 0;
        
int max = 0;
        
        
//最小时间出现的情况为蚂蚁互相之间都不碰头,时间的计算方法按照离棍子中点最近的蚂蚁离开的时间
        for(int i =0;i<5;i++){
            
if(Math.abs(length/2 - ants[i]) < temp){
                temp 
= Math.abs(length/2 - ants[i]);
                min 
= ants[i];
            }

        }

        System.out.println(
"最小时间 = "+min);
        
        
//当两个蚂蚁相碰时调头朝相反的方向走可以等价为两个蚂蚁继续向原来自己前进的方向前进
        
//所以求最大时间等价为找一只蚂蚁,使它到较远端的距离最大,也就是头尾蚂蚁其中的一只。

        if(length - ants[0> ants[4])
            max 
= length-ants[0];
        
else max = ants[4];
        
        System.out.println(
"最大时间 = "+max);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值