藍橋杯 螞蟻感冒 (模擬)

2021-08-17 22:15:13 字數 1169 閱讀 7191

長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資源約定:

峰值記憶體消耗 < 256m

cpu消耗  < 1000ms

這個題好像在跟紫書配套的那本藍書裡見過。。sick存是否感冒,stick存螞蟻的位置和方向,每次迴圈一遍讓螞蟻移動起來,思路很直接,注意細節。。。很多細節。每次移動之後都要更新那兩個陣列

#include using namespace std;

int main()

while (left != 0)

else if (!sick[i] && sick[i + 1])

}else if (i <= 99) //正常走

}else if (i == 100) //掉下木棍

i++;

}else if(stick[i] < 0)

else if (!sick[i] && sick[i - 1])

}else if (i >= 1) //正常走

}else if (i == 0) //掉下木棍

}if (searchedcount == left)

break;

}} cout << ans << endl;

} return 0;

}

**很長主要是把螞蟻左移動和右移動的**複製了一遍。。。。

藍橋杯 螞蟻感冒 模擬

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

藍橋杯 螞蟻感冒

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

藍橋杯 螞蟻感冒

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