黑色代表感冒的蚂蚁,红色代表会被感冒的蚂蚁,绿色代表不会被感冒的蚂蚁
在上面这种情况下:黑色的蚂蚁方向向右,它右边与它方向相反的蚂蚁都会被感染(记作cou1),被感染的蚂蚁反向(也就相当于一个向左,一个向右,可以看成按原方向走),被感染的蚂蚁会感染与它方向相反的蚂蚁(记作cou2)
则当cou1>0时:
被感染的蚂蚁总数为:1+cou1+cou2
当cou1=0时;
被感染的蚂蚁总数为:1
cou1=0为下面这种情况,在它的右边没有与之方向相反的蚂蚁
在上面这种情况下,感冒蚂蚁的方向像左,在感冒蚂蚁左边并且与它方向相反的蚂蚁都会被感染(记作cou1),被感染的蚂蚁会去感染在黑色蚂蚁右边并且方向与被感染蚂蚁方向相反的蚂蚁(记作cou2)
则当cou1>0时:
被感染的蚂蚁总数为:1+cou1+cou2
当cou1=0时;
被感染的蚂蚁总数为:1
cou1=0为下面这种情况,在它的左边没有与之方向相反的蚂蚁
#include<stdio.h> #include <math.h> int a[101],cou1=0,cou2=0; int main() { int n,i,s=1; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); if(a[0]>=0) //当蚂蚁的方向向右时 { for(i=1;i<n;i++) //在感冒蚂蚁右边的与它方向相反的会被感染 if(a[i]<0&&abs(a[i])>a[0]) cou1++; for(i=1;i<n;i++) //被感染的蚂蚁会去感染,第一个感冒蚂蚁左边并且与它方向相反的蚂蚁 if(a[i]>=0&&a[i]<a[0]) cou2++; } else {//当蚂蚁的方向向左时 for(i=1;i<n;i++) //在感冒蚂蚁左边的与它方向相反的会被感染 if(a[i]<abs(a[0])&&a[i]>0) cou1++; for(i=1;i<n;i++) if(abs(a[i])>abs(a[0])&&a[i]<0)//被感染的蚂蚁会去感染,第一个感冒蚂蚁左边并且与它方向相反的蚂蚁 cou2++; } if(a[0]>0&&cou1>0)//如果第一个感冒蚂蚁能够感染蚂蚁,则加上被感染的蚂蚁和被感染蚂蚁可以感染的蚂蚁数量 s+=cou1+cou2; if(a[0]<0&&cou1>0) s+=cou1+cou2; printf("%d",s); return 0; }
0.0分
6 人评分
C语言训练-字符串正反连接 (C语言代码)浏览:664 |
P1002 (C语言代码)浏览:1019 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:672 |
printf基础练习2 (C语言代码)浏览:826 |
WU-蓝桥杯算法提高VIP-交换Easy (C++代码)浏览:1186 |
WU-整数平均值 (C++代码)浏览:1307 |
C语言程序设计教程(第三版)课后习题6.5 (C++代码)浏览:487 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:606 |
排序算法(选择,插入,冒泡)浏览:876 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:692 |