蓝桥杯 —— (历届试题)蚂蚁感冒

问题描述:

                在长为100米的直杆上,有 n 只蚂蚁,它们分别向左向右爬动,它们的速度是一样的。但是当两只蚂蚁向撞时,

                它们都会向相反方向爬去。现在有一只蚂蚁感冒了,给出各个蚂蚁所在的位置,求感冒蚂蚁数?

输入格式:

                line1:  输入蚂蚁总数

                line2:  第一个感冒蚂蚁位置,第二到第 m 分别表示其他蚂蚁位置

输出格式:

                一个数表示感冒蚂蚁个数

样例输入:

                line1:  3

                line2:  -5 3 8

样例输出:

                2

#include <stdio.h>

int main() {
	int m, i, temp, num=1;
	int t[100];
	scanf("%d",&m);
	for(i=0;i<m;i++){
		scanf("%d",&t[i]);
	}
	//感冒蚂蚁向右走 
	if(t[0]>0){
		temp = 0;
		for(i=1;i<m;i++){
			//如果在它右边有蚂蚁向左走,则肯定会被传染。 
			if(t[i]<0 && -t[i]>t[0]) temp++;
		}
		num += temp;
		//如果在它右边没有向左走的蚂蚁,那么怎么走都不会传染其他蚂蚁 
		if(temp==0){
			printf("%d\n",num);
			return 0; 
		}
		else{ 
			temp = 0;
			for(i=1;i<m;i++){
				//那么在它左边有向右的蚂蚁也会被传染 
				if(t[i]>0 && t[i]<t[0]) temp++;
			}
			num += temp;
		}
	}else{//感冒蚂蚁头向左(与向右同思想) 
		temp = 0;
		for(i=1;i<m;i++) if(t[i]>0 && t[i]<-t[0]) temp++;
		num += temp;
		if(temp==0){
			printf("%d\n",num);
			return 0;
		}
		else{
			temp = 0;
			for(i=1;i<m;i++) if(t[i]<0 && t[i]<t[0]) temp++;
			num += temp;
		}
	}
	printf("%d\n",num);
	return 0;
}

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值