蓝桥杯——蚂蚁感冒
因为每个蚂蚁均一样,则触碰后回头相当于两只蚂蚁互相穿越彼此,且两个蚂蚁都感冒,所以可以看作每只蚂蚁向初始的方向走,直到走到两端点位置
#include<iostream>
#include<cmath>
using namespace std;
const int N=55;
int q[N];
int res=0;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>q[i];
if(q[i]<0&&abs(q[i])>=abs(q[0]))res++;//若该蚂蚁是向左走,且在数轴上的位置大于第一只蚂蚁的位置,那么它必感冒
if(q[i]>0&&abs(q[i])<=abs(q[0]))res++;//若该蚂蚁是向右走,且在数轴上的位置小于第一只蚂蚁的位置,那么它必感冒
}
bool flag=true;
for(int i=0;i<n;i++){
if(q[0]>0&&q[i]<0&&abs(q[i])>abs(q[0])){//若第一只蚂蚁向右走,但剩下的蚂蚁都向左走,且在数轴上的位置均小于第一只蚂蚁的位置,那么他们必然不会相遇,也就只有第一只蚂蚁感冒
flag=false;
break;
}
if(q[0]<0&&q[i]>0&&abs(q[i])<abs(q[0])){//若第一只蚂蚁向左走,但剩下的蚂蚁都向右走,且在数轴上的位置均大于第一只蚂蚁的位置,那么他们必然不会相遇,也就只有第一只蚂蚁感冒
flag=false;
break;
}
}
if(flag)res=1;
cout<<res<<endl;
return 0;
}

浙公网安备 33010602011771号