蚂蚁爬杆 java_java蚂蚁爬杆
import java.util.List;
import java.util.ArrayList;
import java.math.BigDecimal;
/*-作者:volcano_hosan
*-----------螞蟻爬桿
*有一根300厘米的細木桿,在第30厘米、80厘米、110厘米、160厘米、250厘米這五個位置上各有一只螞蟻。
*木桿很細,不能同時通過兩只螞蟻。開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會后退。
*當任意兩只螞蟻碰頭時,兩只螞蟻會同時調頭朝相反方向走。假設螞蟻們每秒鐘可以走5厘米的距離。
*請編寫一個程序,計算各種可能情形下所有螞蟻都離開木桿的最小時間和最大時間
*-------分析:兩只螞蟻碰頭之后,因為是相同的個體,速度一樣,只是不作停留掉頭回走,可以認為兩只螞蟻的行進方向沒有改變一直朝一個方向前進
*/
public class Ant{
private BigDecimal totalLength;
private BigDecimal speed;
private List positions;
private BigDecimal maxTime;
private BigDecimal minTime;
Ant(){
totalLength = new BigDecimal("300");
speed = new BigDecimal("5");
positions = new ArrayList();
positions.add(new BigDecimal("30"));
positions.add(new BigDecimal("80"));
positions.add(new BigDecimal("110"));
positions.add(new BigDecimal("160"));
positions.add(new BigDecimal("250"));
setMinTime();
setMaxTime();
}
private void setMaxTime(){
BigDecimal maxNearSidePosition = new BigDecimal("0");
for(BigDecimal position:positions){
maxNearSidePosition = maxNearSidePosition.intValue() > position.intValue() ? maxNearSidePosition : position;
}
maxTime = maxNearSidePosition.divide(speed);
}
public BigDecimal getMaxTime(){
return maxTime;
}
private void setMinTime(){
BigDecimal halfLength = totalLength.divide(new BigDecimal("2"));
BigDecimal minNearHalfPositionLength = halfLength;
for(BigDecimal position:positions){
BigDecimal nearHalfPositionLength = position.subtract(halfLength).abs();
minNearHalfPositionLength = minNearHalfPositionLength.intValue() < nearHalfPositionLength.intValue() ? minNearHalfPositionLength : nearHalfPositionLength;
}
BigDecimal anotherHalfLength = halfLength.subtract(minNearHalfPositionLength);
minTime = anotherHalfLength.divide(speed);
}
public BigDecimal getMinTime(){
return minTime;
}
public static void main(String []args){ ??????? Ant ant = new Ant(); ??????? System.out.println("最大時間:" + ant.getMaxTime()); ??????? System.out.println("最大時間:" + ant.getMinTime()); ??? } }
總結
以上是生活随笔為你收集整理的蚂蚁爬杆 java_java蚂蚁爬杆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery 获取键值对中最大值_jQu
- 下一篇: oracle会闪,oracle闪来