解题思路:
主要是找到规律,根据初始状态,既可以判断出感冒蚂蚁数量。
注意事项:
当感冒蚂蚁走的方向上的其他蚂蚁都走这个方向,或这这个方向上没有蚂蚁,那么感冒的蚂蚁就是一个。
其他情况小感冒蚂蚁数等于(初始状态时)在感冒蚂蚁前方与感冒蚂蚁形式方向相反的蚂蚁+感冒蚂蚁后面与感冒蚂蚁相同方向的蚂蚁;
参考代码:
#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语言训练-舍罕王的失算 (C++代码)(都给答案了还算什么)浏览:994 |
点我有惊喜!你懂得!浏览:2114 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:664 |
printf基础练习2 (C语言代码)浏览:955 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:631 |
简单的a+b (C语言代码)浏览:385 |
C语言程序设计教程(第三版)课后习题6.3 (C++代码)浏览:1067 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:616 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:943 |
1113题解浏览:823 |