解题思路:蚂蚁速度相同,感冒从最开始向两侧扩散
感冒蚂蚁两侧 向两侧走的蚂蚁都不会遇到感冒蚂蚁
感冒蚂蚁两侧 向感冒蚂蚁走的蚂蚁都会遇到感冒的蚂蚁
注意事项:
参考代码:
import java.util.Scanner;
public class Main {
public static void main(String []args){
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int []a=new int[n]; //存放
int s=n; //感冒蚂蚁
int h=0; //标记
for(int i=0;i<n;i++){
a[i]=scanner.nextInt();
}
if(a[0]<0){ //感冒蚂蚁向左
for(int i=1;i<n;i++){
if(a[0]+a[i]>0) s--; //感冒蚂蚁右侧向右蚂蚁没有感冒
if(a[i]<0&&a[i]-a[0]>0) s--;//感冒蚂蚁左侧向左蚂蚁没有感冒
if(a[i]>0&&a[0]+a[i]<0){ //当感冒蚂蚁左侧存在向右蚂蚁 剩余蚂蚁都感冒
s=s;
}else {
h++;
if((h+1)==n) s=1; //蚂蚁左侧没有向右蚂蚁 只有最初的蚂蚁感冒
}
}
}
if(a[0]>0){ //感冒蚂蚁向右
h=0;
for(int i=1;i<n;i++){
if(a[i]<0&&a[0]+a[i]>0) s--;//感冒蚂蚁左侧向左蚂蚁没有感冒
if(a[i]>a[0]) s--; //感冒蚂蚁右侧向右蚂蚁没有感冒
if(a[i]<0&&a[0]+a[i]<0){ //感冒蚂蚁右侧存在向左蚂蚁 剩余蚂蚁都感冒
s=s;
}else {
h++;
if((h+1)==n) s=1; //感冒蚂蚁右侧没有向左蚂蚁 只有最初蚂蚁感冒
}
}
}
System.out.println(s);
}
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:626 |
C语言程序设计教程(第三版)课后习题7.2 (Java代码)浏览:694 |
钟神赛车 (C++代码)浏览:905 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:1484 |
哥德巴赫曾猜测 (C语言代码)浏览:2562 |
DNA (C语言代码)浏览:440 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:549 |
用筛法求之N内的素数。 (C语言代码)浏览:604 |
2005年春浙江省计算机等级考试二级C 编程题(3) (C语言描述—高大上之利用二维指针生成二维数组)浏览:1428 |
永远的丰碑 (C++代码)浏览:815 |