解题思路:
思路:看看图 有什莫想法
黑色代表 首只感冒蚂蚁 红色代表 会感冒蚂蚁 蓝色代表 不会感冒
蚂蚁向碰头 都转向 可看作 都不转向 看成擦肩而过
图 1 2 为一般情况 3 4 为特殊情况 仔细想想 或画图 看看
(两只蚂蚁相遇各自反向可以看作是两只蚂蚁分别继续前进,
然后假如感冒蚂蚁向左行,则会感染它左边所有向右行的蚂蚁,因为它继续向左行,
别感染的第一只蚂蚁继续向右行,感染所有它右边向左行的蚂蚁。)
注意事项:
参考代码:#include
int abss(int s)//取绝对值
{ if(s<0)return -s;
else return s;
}
int main()
{
int qans=0,hans=0,n,i,gm,s;
scanf("%d",&n);
scanf("%d",&gm);//gm 首个感冒蚂蚁 位值
for(i=1;i
{
scanf("%d",&s);
if(abss(gm)
if(abss(gm)>abss(s)&&s>0)qans++;//当在首个蚂蚁左侧并且正向 必感冒
}
if(gm>0&&hans!=0||gm<0&&qans!=0)printf("%d",qans+hans+1);
else printf("1");//当首个感冒蚂蚁方向为正时 在首个蚂蚁右侧并且反向 为 0 或
return 0; //当首个感冒蚂蚁方向为负时 在首个蚂蚁左侧并且反向 为 0 则不会被感冒除首个感冒
}