蓝桥杯—蚂蚁感冒(C语言)

题目描述

输出描述

要求输出 1 个整数,表示最后感冒蚂蚁的数目。

输入输出样例

输入

3
5 -2 8

输出

1

思路

  1. 将输入的蚂蚁按绝对值大小排序,排序前要记录第一个蚂蚁的大小,方便在排序后进行寻找。
  2. 如果第一只蚂蚁向右走,则会感染它右边向左走的蚂蚁,同时这些被感染的向左走的蚂蚁还会感染第一只蚂蚁左边向右走的蚂蚁。
  3. 同理,如果第一只蚂蚁向左走,会感染它左边向右走的蚂蚁,这些被感染的蚂蚁还会感染第一只蚂蚁右边向左走的蚂蚁。

代码

#include<stdio.h>
int w[60]; 
int main(){
	int n,i,j,tem1,tem2,tem3,start,res=1;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		scanf("%d",&w[i]);
	}
	start=w[1];
	for(i=1;i<n;i++){
		for(j=i+1;j<=n;j++){
			if(w[i]<0)tem1=-w[i];
			else tem1=w[i];
			if(w[j]<0)tem2=-w[j];
			else tem2=w[j];
			if(tem1>tem2){
				tem3=w[i];
				w[i]=w[j];
				w[j]=tem3;
			}
		}
	}
	for(i=1;i<=n;i++){
		if(w[i]==start){//根据记录的第一只蚂蚁的值,找到目前第一只蚂蚁的所在位置
			start=i;break;
		}
	}
	if(w[start]>0){//第一只蚂蚁向右走
		for(i=start+1;i<=n;i++){
			if(w[i]<0){
				res++;
			}
		}
			for(i=start-1;i>=1;i--){
				if(w[i]>0){
					res++;
				}
			}
	}	
	if(w[start]<0){
		for(i=start-1;i>=1;i--){
			if(w[i]>0){
				res++;
			}
		}
			for(i=start+1;i<=n;i++){
				if(w[i]<0)res++;
			}
	}
	printf("%d",res);
	return 0;
}

posted @   两颗不一样的西柚  阅读(108)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示
主题色彩