蓝桥杯—蚂蚁感冒(C语言)
题目描述
输出描述
要求输出 1 个整数,表示最后感冒蚂蚁的数目。
输入输出样例
输入
3
5 -2 8
输出
思路
- 将输入的蚂蚁按绝对值大小排序,排序前要记录第一个蚂蚁的大小,方便在排序后进行寻找。
- 如果第一只蚂蚁向右走,则会感染它右边向左走的蚂蚁,同时这些被感染的向左走的蚂蚁还会感染第一只蚂蚁左边向右走的蚂蚁。
- 同理,如果第一只蚂蚁向左走,会感染它左边向右走的蚂蚁,这些被感染的蚂蚁还会感染第一只蚂蚁右边向左走的蚂蚁。
代码
#include
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;item2){
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;
}