题目:
有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
解决思路:两者产生碰撞后又回头,并且还是原来的速度,这里可以采用等价置换(等量代换)的思想,即可以理解为两者还是按照原来的线路行走。
代码:
public static void main(String[] args){
int[] pos = {3,7,11,17,23};
int max =0,min=0,temp_max=0,temp_min=0,length=27;
for(int i : pos){
temp_max = length+1-i>i?length+1-i:i;
temp_min = length+1-i<i?length+1-i:i;
if(temp_max>max){
max = temp_max;
}
if(temp_min<min){
min = temp_min;
}
}
System.out.println("最短时间:"+min+"最长时间:"+max);
}