蓝桥杯—蚂蚁感冒(C语言)
题目描述
输出描述
要求输出 1 个整数,表示最后感冒蚂蚁的数目。
输入输出样例
输入
3
5 -2 8
输出
1
思路
- 将输入的蚂蚁按绝对值大小排序,排序前要记录第一个蚂蚁的大小,方便在排序后进行寻找。
- 如果第一只蚂蚁向右走,则会感染它右边向左走的蚂蚁,同时这些被感染的向左走的蚂蚁还会感染第一只蚂蚁左边向右走的蚂蚁。
- 同理,如果第一只蚂蚁向左走,会感染它左边向右走的蚂蚁,这些被感染的蚂蚁还会感染第一只蚂蚁右边向左走的蚂蚁。
代码
#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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App