原题链接:蓝桥杯历届试题-蚂蚁感冒
参考代码:
#include<iostream> #include<math.h> using namespace std; int main() { /* 1.蚂蚁移动碰面后转向可以理解为穿行,也就是继续沿着原来方向移动, 不在意转向问题,区别在于,没有感染的蚂蚁相遇状态不变,相当于没有碰面,和没有碰面一样; 而被感染的蚂蚁在碰面后,两者状态都是被感染,其余不需要在乎。 具体可以看有个大佬画的图的题解,这样碰面后就只会影响是否被感染*/ /*2.那么理解这个思维后,问题就简单了,所有蚂蚁都不会转向,如图这些蚂蚁会被感染*/ int n; cin>>n; // 用数组装初始蚂蚁位置 int a[50]; int count=1; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=1;i<n;i++){ // 注意位置的绝对值是距离杆子左端的距离,不要直接比较 // 感染源向左,感染蚂蚁=所有向右且位置绝对值比感染源小的+向左同时位置绝对值比感染源大 if(a[0]<0&&a[i]>0&&fabs(a[i])<fabs(a[0])||a[0]<0&&a[i]<0&&fabs(a[i])>fabs(a[0])){ count++; } // 感染源向右,感染蚂蚁=所有向左且绝对值比感染源大的+向右同时位置绝对值比感染源小 if(a[0]>0&&a[i]<0&&fabs(a[i])>a[0]||a[0]>0&&a[i]>0&&a[i]<a[0]){ count++; } } cout<<count; return 0; }
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复