日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

有一根27厘米的细木杆java_百度笔试题 蚂蚁爬杆

發布時間:2023/12/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 有一根27厘米的细木杆java_百度笔试题 蚂蚁爬杆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2016年4月21日百度筆試題–FirstInOutPage import java.util.ArrayList;import java.util.List;// IMPORT LIBRARY PACKAGES NEEDED BY YOUR PROGRAM// SOME CLASSES WITHIN A PACKAGE MAY BE RESTRICTED// DEFINE ANY CLASS AND METHOD NEEDED// CLASS B

最近在網上看到一個螞蟻爬桿的筆試題,很多人寫出來答案公布出來了,但是都不是很滿意,下面是我自己寫的,大家參考

題目:有一根27厘米的細木桿,在第3厘米、7厘米、11厘米、17厘米、23厘米這五個位置上各有一只螞蟻。木桿很細,值傳遞還是引用傳遞,這是很常考的筆試題,關于什么是值傳遞什么是引用傳遞,我就不羅嗦,大家直接記住java中的傳遞機制就行,兩句話的事兒。 (1)首先明確java數據類型 8種基本類型? 一、4種整型? ??? byte????? 1字節?????????? -128——127? ??? short不能同時通過一只螞蟻。開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會后退。當任意兩只螞蟻碰頭時,兩只螞蟻會同時調頭朝反方向走。假設螞蟻們每秒鐘可以走一厘米的距離。編寫程序,求所有螞蟻都離開木桿的最小時間和最大時間。

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class Mayi {

public static final int MAX_LENGTH = 27;

public static int[] list = {3,7,11,17,23};

/**

* @param args

*/

public static void main(String[] args) {

int[][] direct = getDirect(5);

List result = new ArrayList();

for(int i=0;i

int[] start = new int[list.length];

System.arraycopy(list, 0, start, 0, list.length);

int time = move(start,direct[i],0);

result.add(time);

}

System.out.println("max time:"+Collections.max(result));

System.out.println("min time:"+Collections.min(result));

}

/**

* 遞歸生成方向數組

* @param n

* @return

*/

public static int[][] getDirect(int n){

if(n==1){

return new int[][]{{1},{-1}};

}

int[][] last = getDirect(n-1);

int[][] result = new int[last.length*2][n];

for(int k=0;k

result[k][0]=1;

for(int j=0;j

result[k][j+1]=last[k][j];

}

}

for(int k=0;k

result[k+last.length][0]=-1;

for(int j=0;j

result[k+last.length][j+1]=last[k][j];

}

}

return result;

}

/**

* 按照規定的起始方向走完需要的總時間

* @param list

* @param direct

* @param sum

* @return

*/

public static int move(int[] list,int[] direct,int sum){

int tmp = -1;

int distance = MAX_LENGTH;

//查看是否可能會出現碰撞

for(int i=0;i

if(direct[i]==1&&direct[i+1]==-1){

if(list[i+1]-list[i]<=distance){

distance = list[i+1]-list[i];

tmp = i;

}

}

}

//如果有碰撞,遞歸進行下一步

if(tmp!=-1){

int time = distance/2;

for(int i=0;i

list[i] = list[i]+direct[i]*time;

}

direct[tmp]=-direct[tmp];

direct[tmp+1]=-direct[tmp+1];

return move(list,direct,sum)+time;

}else{

int time = 0;

for(int i=0;i

int des = list[i]*direct[i]<0?list[i]:MAX_LENGTH-list[i];

if(list[i]>0&&list[i]

time = des;

}

}

return sum+time;

}

}

}

最近在網上看到一個螞蟻爬桿的筆試題,很多人寫出來答案公布出來了,但是都不是很滿意,下面是我自己寫的,大家參考 題目:有一根27厘米的細木桿,在第3厘米、7厘米、11厘米、17厘米、23厘米這

總結

以上是生活随笔為你收集整理的有一根27厘米的细木杆java_百度笔试题 蚂蚁爬杆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。