藍橋杯 螞蟻感冒

2021-10-20 04:29:25 字數 1363 閱讀 3441

題描述

長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。

每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺/秒。

當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。

這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。

請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。

輸入格式

第一行輸入乙個整數n (1 < n < 50), 表示螞蟻的總數。

接著的一行是n個用空格分開的整數 xi (-100 < xi < 100), xi的絕對值,表示螞蟻離開桿子左邊端點的距離。正值表示頭朝右,負值表示頭朝左,資料中不會出現0值,也不會出現兩隻螞蟻占用同一位置。其中,第乙個資料代表的螞蟻感冒了。

輸出格式

要求輸出1個整數,表示最後感冒螞蟻的數目。

樣例輸入

35 -2 8

樣例輸出

1樣例輸入

5-10 8 -20 12 25

樣例輸出

3思路分享:

1.每個螞蟻相遇後掉頭,兩隻都感冒所以可以看作兩隻螞蟻相互穿過,而不掉頭。

2.如果是最後只有最初的螞蟻感染,只有一種情況:所有的螞蟻的方向都與最初螞蟻的方向相同

3.如果最初感染螞蟻穿過了螞蟻(也就是有螞蟻與其反向),那麼可以分為兩種情況考慮:

1.最初感染螞蟻開始方向向右

同向且在螞蟻右側的螞蟻會被感染

異向且在螞蟻左側的螞蟻會被感染

2.最初感染螞蟻開始方向向左

同向且在螞蟻右側的螞蟻會被感染

異向且在螞蟻左側的螞蟻會被感染

#include

intmain()

;scanf

("%d "

,&n)

;scanf

("%d"

,&a[0]

);if(a[0]

>0)

}if(a[i]

>

0&&a[i]

) sum++;if

(a[i]

<0&&

-a[i]

>a[0]

) sum++;}

}if(a[0

]<0)

}if(a[i]

<

0&&a[i]

) sum++;if

(a[i]

>0&&

-a[0

]>a[i]

) sum++;}

}printf

("%d"

,sum)

;}

藍橋杯 螞蟻感冒

時間限制 1 sec 記憶體限制 128 mb 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你...

藍橋杯 螞蟻感冒

問題描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只...

藍橋杯 螞蟻感冒

長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了...