题目:有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开 始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走 一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
模拟每秒钟5只蚂蚁的情况。在生成Ant对象时确定蚂蚁的运行方向和名字。代码如下:
public class Ant {
//蚂蚁的位置
private int position;
//爬行方向
private boolean front_flg;
//是否到达终点
private boolean isOver = false;
//蚂蚁的名字
private String antName;
public boolean isOver() {
if((position == 0)||(position == 27)){
isOver = true;
} else {
isOver = false;
}
return isOver;
}
public void setOver(boolean isOver) {
this.isOver = isOver;
}
public String getAntName() {
return antName;
}
public void setAntName(String antName) {
this.antName = antName;
}
public boolean isFront_flg() {
return front_flg;
}
public void setFront_flg(boolean front_flg) {
this.front_flg = front_flg;
}
public void setPosition(int position) {
this.position = position;
}
//构造方法
public Ant (int position,boolean flg,String antName){
this.position = position;
this.front_flg = flg;
this.antName = antName;
}
public void crawl(boolean front_flg){
//根据爬行方向判断position的加减
if(!(isOver())){
if (front_flg){
position = position + 1;
} else {
position = position - 1;
}
}
System.out.println(antName + " has arrived position : " + position);
}
public int getPosition() {
return position;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Ant ant3 = new Ant (3,true,"ant3");
Ant ant7 = new Ant (7,true,"ant7");
Ant ant11 = new Ant (11,true,"ant11");
Ant ant17 = new Ant (17,false,"ant17");
Ant ant23 = new Ant (23,false,"ant23");
//记录爬行时间
int useTime = 1;
while(!(ant3.isOver()
&&ant7.isOver()
&&ant11.isOver()
&&ant17.isOver()
&&ant23.isOver())){
//如果两只蚂蚁相遇则调转爬行方向
if (ant3.getPosition()==ant7.getPosition()){
boolean temp;
temp = ant3.isFront_flg();
ant3.setFront_flg(ant7.isFront_flg());
ant7.setFront_flg(temp);
}
if (ant3.getPosition()==ant11.getPosition()){
boolean temp;
temp = ant3.isFront_flg();
ant3.setFront_flg(ant11.isFront_flg());
ant11.setFront_flg(temp);
}
if (ant3.getPosition()==ant17.getPosition()){
boolean temp;
temp = ant3.isFront_flg();
ant3.setFront_flg(ant17.isFront_flg());
ant17.setFront_flg(temp);
}
if (ant3.getPosition()==ant23.getPosition()){
boolean temp;
temp = ant3.isFront_flg();
ant3.setFront_flg(ant23.isFront_flg());
ant23.setFront_flg(temp);
}
if (ant7.getPosition()==ant11.getPosition()){
boolean temp;
temp = ant7.isFront_flg();
ant7.setFront_flg(ant11.isFront_flg());
ant11.setFront_flg(temp);
}
if (ant7.getPosition()==ant17.getPosition()){
boolean temp;
temp = ant7.isFront_flg();
ant7.setFront_flg(ant17.isFront_flg());
ant17.setFront_flg(temp);
}
if (ant7.getPosition()==ant23.getPosition()){
boolean temp;
temp = ant7.isFront_flg();
ant7.setFront_flg(ant23.isFront_flg());
ant23.setFront_flg(temp);
}
if (ant11.getPosition()==ant17.getPosition()){
boolean temp;
temp = ant11.isFront_flg();
ant11.setFront_flg(ant17.isFront_flg());
ant17.setFront_flg(temp);
}
if (ant11.getPosition()==ant23.getPosition()){
boolean temp;
temp = ant11.isFront_flg();
ant11.setFront_flg(ant23.isFront_flg());
ant23.setFront_flg(temp);
}
if (ant17.getPosition()==ant23.getPosition()){
boolean temp;
temp = ant17.isFront_flg();
ant17.setFront_flg(ant23.isFront_flg());
ant23.setFront_flg(temp);
}
//蚂蚁爬行
ant3.crawl(ant3.isFront_flg());
ant7.crawl(ant7.isFront_flg());
ant11.crawl(ant11.isFront_flg());
ant17.crawl(ant17.isFront_flg());
ant23.crawl(ant23.isFront_flg());
System.out.println("Use time is :" + useTime++);
System.out.println("================================");
}
}
}
分享到:
相关推荐
大厂面试题,岗位前端开发工程师,阿里旗下,蚂蚁金服,一面原题,共5道在线编程题,不含答案!仅供参考学习!涉及防抖、进制转换、模板引擎、事件订阅、数组转换等。
原生js操作:驼峰格式和下划线格式互转,json字符串转换……五道题,带答案
兰顿蚂蚁 兰顿的蚂蚁是一台二维图灵机,具有一组非常简单的规则,但复杂的紧急行为。 它是由克里斯·兰顿(Chris Langton)于1986年发明的,它在黑白单元格的方形格子上运行。 我推荐Numberphile的来更好地解释它。...
增加手机信息页以及商家页分享微信分享朋友圈的功能7,信息分类列表页的标题改进8,修正手机版里输入框检测重复时,窗口不停弹出无法关闭的BUG9,修正违禁词语出现后信息不自动转待审的问题10,增加手机端找回用户...
红黑书:红黑树是在普通二叉树上,对每个节点添加一个颜色属性形成的,需要 同时满足一下五条性质 (1)节点是红色或者是黑色; (2)根节点是黑色; (3)每个叶节点(NIL 或空节点)是黑色; (4)每个红色节点的...
将输入的字符进行某种方式的编码后显示出来!
微信/支付宝即时到账,几千元的资源,类似蚂蚁帮扶、众人帮平台。 1.二维码推广海报功能 2.增加注册账号短信验证码功能(对接阿里云短信) 3.支付接口更换为个人免签约支付(不需要企业开户) 4.修复个人中心Q群连接...
2、长路漫漫踏歌而行:蚂蚁金服Service+Mesh实践探索 3、百度智能云容器产品布局和创新应用 4、华泰保险核心业务系统容器化之路 5、中国人寿如何基于容器构建PaaS云平台 6、反脆弱:云计算时代运维如何转型-中国银行...
精彩案例分析与实现: 视频演示: 小猫躲移动挡板 蚂蚁爬线 案例讲解流程和实操 第一讲 Scratch编程(1) Scratch儿童编程培训资料-7全文共17页,当前为第2页。 案例讲解流程 1、任务导航 2、任务分析 3、跟着做 4...
如果要使用Ant Build Tool编译项目,只需使用shell转到项目目录并在shell中执行以下命令: $ ant compile 如何运行JUnit测试 如果要运行JUnit测试,只需使用shell转到项目目录并在shell中执行以下命令: $ ant ...
10级电压比较器的同相输入端与电阻分压器相连,电阻分压器由10只1kg精密电阻串联组成。 各单位级比较器的加权值相等,从而使得十级线性显示驱动器的组成,适合与LED中使用,更能完成LCD、VFD电平表的线性标度器件的...
目录:一、支付宝商家私域运营趋势 04二、支付宝私域运营全链路地图 10三、如何在支付宝做生活号运营 52四、如何在支付宝运营会员 72五、如何在支付宝玩转优惠券 85六、支付宝私域运营激励政策 94七、蚂蚁特色能力...
今年年初的Apple的Siri,亚马逊的Echo和Alexa,阿里巴巴的ET和阿里小蜜,蚂蚁金服的刷脸支付,Google的无人车等都有人工智能技术的身影。投资界和产业界对AI的关注度更是前所未有的高涨,令人联想起2000年左右互联网...
二进制转字符串 翻转位取胜 下一个号码 调试器 转换 成对交换 画线 6) 数学和逻辑谜题: 重药丸 篮球 多米诺骨牌 三角形上的蚂蚁 一壶水 蓝眼岛 天启 掉蛋问题 100个储物柜 毒 7) 面向对象设计: 一副纸牌 呼叫中心 ...
步骤5:判断新聚类中心坐标与原聚类中心坐标的差值是否大于设定的阈值,若大于,则转至步骤2;否则,保存聚类结果,改进K-Means聚类算法结束。 阶段2:配送路径规划 经过阶段1的聚类后,每个聚类簇内的需求点需求量...
1.光盘的运行环境 硬件环境:CPU的主频在200...类似网络蚂蚁的断点续传程序【\Appendix\NetAnts】 网络多播程序【\Appendix\BroadCast】 界面美观的文字聊天程序【\Appendix\Chat】 语音电话【\Appendix\PhoneCall】
1.光盘的运行环境 硬件环境:CPU的主频在200...类似网络蚂蚁的断点续传程序【\Appendix\NetAnts】 网络多播程序【\Appendix\BroadCast】 界面美观的文字聊天程序【\Appendix\Chat】 语音电话【\Appendix\PhoneCall】
5.在设备模型中提供了iOS、Android等8种主流的设备线框模型,所有的模型元素都支持调整尺寸和颜色,可用于制作线框或手绘原型图。另外,作品中还提供了绘制流程图的各种风格的元素及线条,以及交互原型标注的标签和...
基本网络编程实例 Winsock实现网络聊天室【\...类似网络蚂蚁的断点续传程序【\Appendix\NetAnts】 网络多播程序【\Appendix\BroadCast】 界面美观的文字聊天程序【\Appendix\Chat】 语音电话【\Appendix\PhoneCall】
光 盘 说 明 为了方便读者学习,本书附带了...类似网络蚂蚁的断点续传程序【\Appendix\NetAnts】 网络多播程序【\Appendix\BroadCast】 界面美观的文字聊天程序【\Appendix\Chat】 语音电话【\Appendix\PhoneCall】