前几天,我参加某公司的笔试,遇到如下题目
一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。 木杆很细,不能同时通过一只蚂蚁。开始 时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。 编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
当时急急忙忙写了一下,写得不是很完整,现在重新写下,和大家分享
import java.util.*;
public class MaYi
{
public final static int FORWARD = 1;//向前走
public final static int BACKWARD = -1;//向后走
public int location;//位置
public int direction;//方向
public MaYi()
{
this.location =0;
this.direction =FORWARD;
}
public MaYi(int location ,int direction)
{
this.location = location;
this.direction = direction;
}
/**
* 蚂蚁移动
*/
public void walk()
{
location += direction;
}
/**
* 蚂蚁掉转方向
*/
public void turn()
{
if(direction == FORWARD) direction = BACKWARD;
else direction = FORWARD;
}
/**
*两只蚂蚁是否碰头
*/
public boolean isNear(MaYi m)
{ if(m ==null) return false;
int result = this.location - m.location;
if(result ==1 || result== -1) return true;
else return false;
}
/**
*蚂蚁是否离开
*/
public boolean isLeave()
{
if(location<1 || location >27) return true;
else return false;
}
public static void run(List list)
{ //总的次数
int count = 0;
//循环,直到所有蚂蚁都离开
while(!list.isEmpty())
{
MaYi first =null;
MaYi second = null;
for(int i = 0; i list = null;
for(int a=0;a<2;a++)
for(int b=0;b<2;b++)
for(int c=0;c<2;c++)
for(int d=0;d<2;d++)
for(int e=0;e<2;e++)
{
if(a ==0) first =1;
else first = -1;
if(b ==0) second =1;
else second = -1;
if(c ==0) third =1;
else third = -1;
if(d ==0) fourth =1;
else fourth = -1;
if(e ==0) fifth =1;
else fifth = -1;
list= new LinkedList();
list.add(new MaYi(3,first));
list.add(new MaYi(7,second));
list.add(new MaYi(11,third));
list.add(new MaYi(17,fourth));
list.add(new MaYi(23,fifth));
System.out.printf("第1蚂蚁,位置3,方向%d\n",first);
System.out.printf("第2蚂蚁,位置7,方向%d\n",second);
System.out.printf("第3蚂蚁,位置11,方向%d\n",third);
System.out.printf("第4蚂蚁,位置17,方向%d\n",fourth);
System.out.printf("第5蚂蚁,位置23,方向%d\n",fifth);
MaYi.run(list);
}
}
}
结果如下:
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向1
移动时间为:25
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向1
移动时间为:22
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向1
移动时间为:22
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向1
移动时间为:22
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向1
移动时间为:20
第1蚂蚁,位置3,方向1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向1
移动时间为:22
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向-1
移动时间为:22
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向1
移动时间为:22
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向1
移动时间为:20
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向1
移动时间为:18
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向1
移动时间为:18
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向1
移动时间为:18
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向1
移动时间为:12
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向1
第5蚂蚁,位置23,方向-1
移动时间为:24
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向1
移动时间为:18
第1蚂蚁,位置3,方向-1
第2蚂蚁,位置7,方向-1
第3蚂蚁,位置11,方向-1
第4蚂蚁,位置17,方向-1
第5蚂蚁,位置23,方向-1
移动时间为:24