一个超牛的程序设计题,请帮忙
来源:百度知道 编辑:UC知道 时间:2024/05/30 11:38:22
共有五只蚂蚁,每只蚂蚁开始只有正、反向两种状态,意思说只有2^5=32种状态,只要把这32种状态都试完了,最大最小时间也就出来了。
可以建立Ant类
public class Ant {
int position;
boolean direction;
}
position 取值范围 0~27代表在木棍上的位置。
direction 代表现在的行进方向,true为正向,false为反向。
可用一个五重for循环,每重循环两次,使direction的初始值不一样。
在在五重循环最内层,用一个while(true)循环来移动蚂蚁,包含一个初始值为0的计数器。每次循环根据每只蚂蚁direction值来进行移动(position加减1操作),计数器加1,之后判断又没有出现position相同的蚂蚁。如果有,更改direction的值。还需要一个条件语句来判断position是否大于27或小于0,是的话就不再移动。重复直到所有position均大于27或小于0,break这个while(true)循环。得到计数器的值则为这次所需时间。
可以把这个时间存在一个ArrayList<Integer>内,循环完32次之后,就得到每次所用的时间,调用ArrayList的sort()方法排序后,就可以得到最短和最长的时间
怎么看着都像是微软技术面试心得上的题。。。
书不在我手边
放公司了
蚂蚁掉头的情况跟没掉头是一样的。。。
一共两个类,具体思路看我的注释吧,应该够详细了:蚂蚁类定义数据结构,蚂蚁移动类则是具体的走法的输出
蚂蚁类:
public class Ant {
private int direction;
private int position;
/*
* 初始化蚂蚁的位置
*/
public Ant(int position){
this.position=position;
}
public int