蓝桥杯——蚂蚁感冒

因为每个蚂蚁均一样,则触碰后回头相当于两只蚂蚁互相穿越彼此,且两个蚂蚁都感冒,所以可以看作每只蚂蚁向初始的方向走,直到走到两端点位置

#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;
}
posted @ 2020-08-08 11:44  进化の程序猿  阅读(140)  评论(0)    收藏  举报