玉面小蛟龙


私信TA

用户名:2410056091

访问量:16053

签 名:

等  级
排  名 251
经  验 5957
参赛次数 46
文章发表 51
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

黑色代表感冒的蚂蚁,红色代表会被感冒的蚂蚁,绿色代表不会被感冒的蚂蚁


3.PNG

在上面这种情况下:黑色的蚂蚁方向向右,它右边与它方向相反的蚂蚁都会被感染(记作cou1),被感染的蚂蚁反向(也就相当于一个向左,一个向右,可以看成按原方向走),被感染的蚂蚁会感染与它方向相反的蚂蚁(记作cou2)

则当cou1>0时:

被感染的蚂蚁总数为:1+cou1+cou2

当cou1=0时;

被感染的蚂蚁总数为:1

cou1=0为下面这种情况,在它的右边没有与之方向相反的蚂蚁

2.PNG

4.PNG

在上面这种情况下,感冒蚂蚁的方向像左,在感冒蚂蚁左边并且与它方向相反的蚂蚁都会被感染(记作cou1),被感染的蚂蚁会去感染在黑色蚂蚁右边并且方向与被感染蚂蚁方向相反的蚂蚁(记作cou2)

则当cou1>0时:

被感染的蚂蚁总数为:1+cou1+cou2

当cou1=0时;

被感染的蚂蚁总数为:1

cou1=0为下面这种情况,在它的左边没有与之方向相反的蚂蚁

1.PNG

#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 人评分

  评论区

  • «
  • »