解题思路:
主要是找到规律,根据初始状态,既可以判断出感冒蚂蚁数量。
注意事项:
当感冒蚂蚁走的方向上的其他蚂蚁都走这个方向,或这这个方向上没有蚂蚁,那么感冒的蚂蚁就是一个。
其他情况小感冒蚂蚁数等于(初始状态时)在感冒蚂蚁前方与感冒蚂蚁形式方向相反的蚂蚁+感冒蚂蚁后面与感冒蚂蚁相同方向的蚂蚁;
参考代码:
#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语言程序设计教程(第三版)课后习题8.4 (C++代码)浏览:600 |
字符逆序 (C语言代码)浏览:789 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:619 |
C语言训练-求矩阵的两对角线上的元素之和 (C++代码)浏览:806 |
陶陶摘苹果 (C语言代码)浏览:1607 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:2468 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:643 |
矩形面积交 (Java代码)浏览:1221 |
简单的a+b (C语言代码)浏览:676 |
【密码】 (C语言代码)浏览:333 |