解题思路:
主要是找到规律,根据初始状态,既可以判断出感冒蚂蚁数量。
注意事项:
当感冒蚂蚁走的方向上的其他蚂蚁都走这个方向,或这这个方向上没有蚂蚁,那么感冒的蚂蚁就是一个。
其他情况小感冒蚂蚁数等于(初始状态时)在感冒蚂蚁前方与感冒蚂蚁形式方向相反的蚂蚁+感冒蚂蚁后面与感冒蚂蚁相同方向的蚂蚁;
参考代码:
#include<stdio.h>
#include<math.h>
int main(){
int a[50],i,j=0,n,mun=0,k=0; // mun 统计感冒蚂蚁数;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
if(a[0]<0){ //当感冒蚂蚁向左时
for(i=0;i<n;i++){
if(fabs(a[i])<fabs(a[0])){
k++;
if(a[i]<0)j++;
}
}
if(k==j||k==0)mun=0; // 感冒蚂蚁方向上没有蚂蚁或者蚂蚁都与感冒蚂蚁一个方向
else{
// 感冒蚂蚁左边有与感冒蚂蚁前进方向相反的或感冒蚂蚁右边有与感冒蚂蚁相同方向的蚂蚁,感冒蚂蚁数量都加一
for(i=0;i<n;i++){
if(fabs(a[i])<fabs(a[0])){
if(a[i]>0)mun++;}
else {
if(a[i]<0)mun++;
}
}
}
}
else{ //感冒蚂蚁朝向另一个方向,算法完全相同
for(i=0;i<n;i++){
if(fabs(a[i])>fabs(a[0])){
k++;
if(a[i]>0)j++;
}
}
if(k==j||k==0)mun=0;
else{
for(i=0;i<n;i++){
if(fabs(a[i])>fabs(a[0])){
if(a[i]<0)mun++;}
else {
if(a[i]>0)mun++;
}
}
}
}
printf("%d",mun);
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复