解题思路:
主要是找到规律,根据初始状态,既可以判断出感冒蚂蚁数量。
注意事项:
当感冒蚂蚁走的方向上的其他蚂蚁都走这个方向,或这这个方向上没有蚂蚁,那么感冒的蚂蚁就是一个。
其他情况小感冒蚂蚁数等于(初始状态时)在感冒蚂蚁前方与感冒蚂蚁形式方向相反的蚂蚁+感冒蚂蚁后面与感冒蚂蚁相同方向的蚂蚁;
参考代码:
#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语言代码)浏览:855 |
Tom数 (C++代码)浏览:828 |
C语言程序设计教程(第三版)课后习题9.3 (Java代码)浏览:966 |
母牛的故事 (C语言代码)浏览:435 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:277 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1293 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:596 |
wu-理财计划 (C++代码)浏览:835 |
WU-小九九 (C++代码)浏览:1684 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:648 |