問題 1454:
時間限制: 1Sec 內存限制: 128MB 提交: 1280 解決: 558
題目描述
長100釐米的細長直杆子上有n只螞蟻。它們的頭有的朝左,有的朝右。
每隻螞蟻都只能沿着杆子向前爬,速度是1釐米/秒。
當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。
這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。
請你計算,當所有螞蟻都爬離杆子時,有多少隻螞蟻患上了感冒。
輸入
第一行輸入一個整數n (1 < n < 50), 表示螞蟻的總數。
接着的一行是n個用空格分開的整數 Xi (-100 < Xi < 100), Xi的絕對值,表示螞蟻離開杆子左邊端點的距離。正值表示頭朝右,負值表示頭朝左,數據中不會出現0值,也不會出現兩隻螞蟻佔用同一位置。其中,第一個數 據代表的螞蟻感冒了。
輸出
要求輸出1個整數,表示最後感冒螞蟻的數目。
樣例輸入
5 -10 8 -20 12 25
樣例輸出
3
思路:兩種情況
如果第一個螞蟻是負的
看距離的話,它的左邊只有當有一個正數的螞蟻時,這樣左邊正的螞蟻都被感染,右邊負的螞蟻都被感染
如果第一個螞蟻是正的
看距離的話,它的右邊只有當有一個負數的螞蟻時,這樣右邊負的螞蟻都被感染,左邊正的螞蟻都被感染
代碼:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int a[]=new int[55];
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int count=1;
int n=scan.nextInt();
for(int i=0;i<n;i++)
a[i]=scan.nextInt();
if(a[0]>0){
for(int i=1;i<n;i++)
if(a[i]<0 && Math.abs(a[i])>a[0])
count++;
if(count>1)
for(int i=1;i<n;i++)
if(a[i]>0 && Math.abs(a[i])<a[0])
count++;
}
else{
for(int i=1;i<n;i++)
if(a[i]>0 && a[i]<Math.abs(a[0])) count++;
if(count>1){
for(int i=1;i<n;i++)
if(a[i]<0 && a[i]<a[0])
count++;
}
}
System.out.println(count);
}
}