怎样以java编程解决趣味蚂蚁问题

怎样以java编程解决趣味蚂蚁问题

ID:5297777

大小:218.69 KB

页数:4页

时间:2017-12-07

怎样以java编程解决趣味蚂蚁问题_第1页
怎样以java编程解决趣味蚂蚁问题_第2页
怎样以java编程解决趣味蚂蚁问题_第3页
怎样以java编程解决趣味蚂蚁问题_第4页
资源描述:

《怎样以java编程解决趣味蚂蚁问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、-·QUESTION&ANSW硼一一一⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一⋯⋯⋯⋯~⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯this.direction=direction怎样以Java编程解决趣味蚂蚁问题}《》1.问题描述∥切换蚂蚁朝向趣味蚂蚁问题是一个最近在互联网上出现的一个智力问publicvoidflipDirection0题。其具体描述如下:{有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、direction:一1:17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不)能同时通过两只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意//蚂蚁移动,distance指定移动距离的,它们只会朝前走或调头,

2、但不会后退。当任意两只蚂蚁碰publicvoidmove(intdistance)(头时.两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可position+=distancedirection:以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小)时间和最大时间。2.问题分析∥右冲突:a是否位于右端,且方向相对趣味蚂蚁问题首先是一个排列组合问题:每个位置上的蚂publicbooleanw川CoⅢdeRight(Anta)蚁有2个朝向,对N(N=I,2,3,⋯)只蚂蚁的问题,共有2N种排列方式:当排列方式确定以后.该问题转化为一个状态迁移过returnthis.position

3、etPosition0&&程,即由最初的排列状态,经过一系列移动步骤,达到所有蚂thisdirection==Ant.RIGHT&&a.getDirection0==Ant.LEFT;蚁离开木杆的状态。计算机编程需要模拟出木杆上的蚂蚁排列状态和状态迁移步骤,在程序设计中,将木杆上的蚂蚁排列实现为一个蚂蚁队,/是否碰头列,并为蚂蚁队列设计出一个移动方法,模拟队列中的蚂蚁移publicbooleanisCollide(Anta)动;当蚂蚁移动而离开木杆时,将其从队列中删除。蚂蚁队列{的状态由其中的蚂蚁构成,其初始状态就是起初的蚂蚁排列状returnthis.position==a.getP

4、osition0态,其终止状态就是队列为空。中间状态将选取发生蚂蚁碰头)的时刻,并据此来设计移动方法。每步移动后,需要对蚂蚁队列的状态进行调整:发生碰头publicfinalstaticintLEFT=一1://朝向:左的蚂蚁切换朝向,越界的蚂蚁从队列中删除。在蚂蚁队列由初publicfinalstaticintRIGHT=1://朝向:右privatestaticintspeed=1://运动速度始状态迁移至终止状态的过程中,程序只要统计出蚂蚁队列的移动路程,就可以获得蚂蚁移动的时间:)时间=路程/速度Ant类的成员position表示蚂蚁在木杆上的位置,direction对于最小值

5、问题,也可以精心构造一个排列.而直接求表示其朝向。方法move0实现蚂蚁移动;方法flipDirection0用得;在此,也将其视作一个一般问题,而采用一致的方法求来切换其朝向:方法willCollideRight0来判断蚂蚁是否与位取。于其右边的相邻蚂蚁在移动中会发生撞头:方法isCollide0用3.编程解决来判断两只蚂蚁是否碰头。蚂蚁的朝向左和右,以类静态常量通过前面的分析,现编写程序,模拟出所有组合方式,找实现。即LEFT和RIGHT。蚂蚁的运动速度,以类静态变量到所有蚂蚁都离开木杆的最小时间和最大时间实现,即speed。(1)类Ant(2)类AntQueue类Ant实现问题中

6、的蚂蚁,其主要代码如下类AntQueue表示蚂蚁队列,一个蚂蚁队列模拟一种排列classAnt方式。下面分析其主要代码:{privateintposition;//位置classAntQueueimplementsRunnable,Callbackprivateintdirection;//朝向{privateintlog;//木杆长度publicAnt(intposition,intdirection)privateListlist;//蚂蚁队列privateintdistance=O://统计蚂蚁运动路程this.position=position黼⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯

7、⋯⋯⋯⋯⋯⋯-实用第一智慧密集publicAntQueue(intlog,Antqueue【J)4)蚂蚁队列移动{实现蚂蚁队列移动,修改队列中每只蚂蚁的位置。this.1og=log;privatevoidmove(intdistance){list:newArrayList(Arrays.asList《queue)):for(int__O:i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。