百度面试题蚂蚁爬竹竿
来源:互联网 发布:java全局异常捕获 编辑:程序博客网 时间:2024/06/11 12:04
看到百度的面试题蚂蚁爬干,觉得听好玩的就写了一个,请高手指点
题目如下:
有一根27厘米的细木杆,在第3厘米、7厘 米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或 调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时 间和最大时间。
我的出的最大时间为24妙。这道题我用的递归写的,代码如下
public class AntTheme {
private int count;//计算总共用了多少秒
private int complete; //完成的数量
private int[] ants;//蚂蚁位置
private boolean[] orientations;//蚂蚁的方向
private int longness;//竹竿长度
public AntTheme(int count,int[] ants,boolean[] orientations,int longness)
{
this.count = count;
this.complete = ants.length;
this.ants = ants;
this.orientations = orientations;
this.longness = longness;
this.doAccount(this.ants,this.orientations, this.longness);
}
public void doAccount(int[] ants,boolean[] orientations,int longness)
{
//定义蚂蚁的爬行方向
for(int index=0;index<orientations.length;index++)
{
if(orientations[index])
{
ants[index]++;
}
else
{
ants[index]--;
}
}//控制相遇时的爬行方向
for(int antIndex =0;antIndex < ants.length-1;antIndex++)
{
if(ants[antIndex] == ants[antIndex+1])
{
orientations[antIndex] = !orientations[antIndex];
orientations[antIndex+1] = !orientations[antIndex+1];
}
else
{//爬出竹竿的蚂蚁归零
if(ants[antIndex] >= longness || ants[antIndex] <= 0)
{
ants[antIndex] = 0;
this.complete--;
}
}
}
if(ants[ants.length-1] >= longness || ants[ants.length-1] <= 0)
{
ants[ants.length-1] = 0;
this.complete--;
}
if(this.complete <= 0)//是否所有的蚂蚁都爬出了竹竿
{
return;
}
else
{
System.out.println("所有蚂蚁走了" + count++ + "秒");
this.doAccount(ants, orientations, longness);//递归调用
}
}
public static void main(String[] args) {
//蚂蚁的爬行方向true为向右爬,false为向左爬
boolean[] orientations = {true,true,true,true,false};
//蚂蚁的位置
int[] ants = {3,7,11,17,23};
int longness = 27;//竹竿的长度
AntTheme antTheme = new AntTheme(1,ants,orientations,longness);
}
}
得出的结果:
所有蚂蚁走了2秒
所有蚂蚁走了3秒
所有蚂蚁走了4秒
所有蚂蚁走了5秒
所有蚂蚁走了6秒
所有蚂蚁走了7秒
所有蚂蚁走了8秒
所有蚂蚁走了9秒
所有蚂蚁走了10秒
所有蚂蚁走了11秒
所有蚂蚁走了12秒
所有蚂蚁走了13秒
所有蚂蚁走了14秒
所有蚂蚁走了15秒
所有蚂蚁走了16秒
所有蚂蚁走了17秒
所有蚂蚁走了18秒
所有蚂蚁走了19秒
所有蚂蚁走了20秒
所有蚂蚁走了21秒
所有蚂蚁走了22秒
所有蚂蚁走了23秒
所有蚂蚁走了24秒
- 百度面试题蚂蚁爬竹竿
- 蚂蚁爬竹竿问题
- 百度面试题蚂蚁(C#)
- 百度面试题——蚂蚁爬杆答案
- 百度面试题——蚂蚁爬杆
- 百度面试题:蚂蚁过杆
- [面试题] 蚂蚁蚂蚁
- 百度面试题一道2(著名的蚂蚁问题)
- 百度面试题(著名的蚂蚁问题)
- [百度] 蚂蚁爬竿面试题-非递归解法
- 一道百度试题蚂蚁过竿
- 百度面试题--5只蚂蚁走木棍问题的非递归解法(Java调试通过)
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 2007 百度面试题
- 精灵鼠小弟 bt
- 精灵书童 怎么用
- 精美脑筋转转转 官网
- 程序员的精神
- 基于RTP协议和MPEG-4的流媒体系统分析与实现
- 百度面试题蚂蚁爬竹竿
- Access转Excel AND Excel导入ACC 代码
- 电灯开关与文化水平
- 局域网互聊工具 官网
- 局域网工具 免费
- 局域网管理之星 下载
- 局域网地址检测器 绿色
- 局域网超级工具 怎么用
- 局域网查看工具(lansee) 下载