問題描述:有一根27厘公尺長的細木桿,在第3厘公尺,7厘公尺,11厘公尺,17厘公尺,23厘公尺這五個位置上各有乙隻螞蟻,木桿很細,不能同時通過兩隻螞蟻,開始時,螞蟻的頭朝向左還是右是任意的,他們只會朝前走或掉頭,但不會後退,當兩隻螞蟻相遇後,螞蟻會同時掉頭朝反方向走,假設螞蟻們每秒鐘可以走1厘公尺的距離。求所有螞蟻都離開木桿的最小時間和最大時間。
解決方法:
所有螞蟻都離開木桿的最小時間相當於每只螞蟻離開的最小值的最大值,即:
min=max(min(3),min(7),min(11),min(27-17),min(27-23));
所有螞蟻都離開的最大時間為:
max=max(max(27-3),max(27-7),max(27-11),max(17),max(23));
下面給出兩種解法**如下:
#include void calctime1(double length,double *xpos,int num,double speed,double *min,double *max)
else
currentmin = totaltime-currentmax;
if (*max < currentmax)
if (*min < currentmin)
}}void calctime2(double length,double *xpos,int num,double speed,double *min,double *max)
else if((xpos[i]-length/2)<= 0)
}if (currentmax > (length-xpos[i]) || currentmax > xpos[i])
else
} }}
int main()
; calctime1(length,xpos,num,speed,&min,&max);
printf("方法1,計算結果:\n");
printf("min = %f,max = %f\n",min,max);
calctime2(length,xpos,num,speed,&min,&max);
printf("方法2,計算結果:\n");
printf("min = %f,max = %f\n",min,max);
system("pause");
return 0;
}
螞蟻爬桿問題
告訴你有乙個長為l l 10000 的木桿,上面有n n 1000 個螞蟻,他們一開始的朝向隨機,他們會以一定的速度一直向當前方向走,直到兩隻螞蟻相遇,他們會立即掉頭 即往相反方向走 計算t秒後螞蟻的位置 輸入的第一行為陣列個數,每組陣列第一行為三個正整數,l,t,n,分別表示長度,時間,螞蟻個數。...
螞蟻爬桿問題分析
題目 讀完這道題以後,我的想法是 最短時間考慮如下 首先標出木桿的中點,即在 0 27 2 13.5厘公尺處。然後所有的螞蟻都沿著木桿向離自己較近的一端走,這樣所有螞蟻都離開木桿的時間是最短的,即,為距離木桿中點最近的螞蟻走向離它最近一端所用的時間。所以此題為11s。0 13.5 27 最長時間考慮...
java螞蟻爬桿
ant private void setmaxtime maxtime maxnearsideposition.divide speed public bigdecimal getmaxtime private void setmintime bigdecimal anotherhalflength...