解题思路:

8888.png

思路:看看图 有什莫想法 
黑色代表 首只感冒蚂蚁 红色代表 会感冒蚂蚁 蓝色代表 不会感冒 
蚂蚁向碰头 都转向 可看作 都不转向 看成擦肩而过 
图 1 2 为一般情况 3 4 为特殊情况 仔细想想 或画图 看看 
(两只蚂蚁相遇各自反向可以看作是两只蚂蚁分别继续前进, 
然后假如感冒蚂蚁向左行,则会感染它左边所有向右行的蚂蚁,因为它继续向左行, 
别感染的第一只蚂蚁继续向右行,感染所有它右边向左行的蚂蚁。)


原文(含有模拟和非模拟版)    欢迎访问 我的博客


注意事项:

参考代码:

#include<stdio.h>
 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<n;i++)
     {
       scanf("%d",&s);
       if(abss(gm)<abss(s)&&s<0)hans++;//当在首个蚂蚁右侧并且反向 必感冒 
       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 则不会被感冒除首个感冒 
}


点赞(57)
 

0.0分

44 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 24 条评论

医药行业应用 3月前 回复TA
@打开自己 题目只说了一只蚂蚁有感染能力,没说其它有感染力就不把问题复杂化
Ma406007 5月前 回复TA
第一次做蓝桥杯不太习惯,哈哈哈
秋刀鱼不过期 1年前 回复TA
@坚果 有问题诶,当首个感冒蚂蚁方向为负且左侧没有蚂蚁的时候,“在首个蚂蚁右侧且反向必感冒”是错误的
melody 1年前 回复TA
@坚果 为什么不用判断first正负
坚果 1年前 回复TA
#include<stdio.h>
#include<math.h>
int  main()//用绝对值判断相对位置,用符号来判断走的方向 
{
  int sum=1;//一开始的感染数 
  int n,first,s,i;
  scanf("%d",&n); 
  scanf("%d",&first);//首个感冒蚂蚁位置 
    for(i=1;i<n;i++)
     {
       scanf("%d",&s);
       if(abs(first)<abs(s)&&s<0)
	   {
	   		sum++;
	   }//当在首个蚂蚁右侧并且反向必感冒
       if(abs(first)>abs(s)&&s>0)
	   	{
	   		sum++;//当在首个蚂蚁左侧并且正向必感冒 
     	}
	}
	printf("%d",sum);
return 0; 
}
坚果 1年前 回复TA
不用else printf("1")也可以
芝士雪豹 1年前 回复TA
芝士简单题??!o(╥﹏╥)oo(╥﹏╥)o
VERITAS 2年前 回复TA
秀儿
EasyHuang 2年前 回复TA
不大懂,如果首只感染蚂蚁是25呢。。一直往右走?
2年前 回复TA
最后那个判断有必要吗(小白)  如果没感染 hans和qans为零 输出hans+qans+1结果一样