分析:
(1)因为只计算数量,所以蚂蚁是掉头还是直接向前走对本题没有影响
(2)如果感冒的蚂蚁方向向左:
在它左边的蚂蚁:如果向右,则会感染;如果向左则不会感染
在它右边的蚂蚁:如果向右,则不会感染
如果向左:(1)如果感冒的那只蚂蚁左边有向右的蚂蚁,他会掉头,则右边向左的蚂蚁会感冒
(2)如果感冒的那只蚂蚁左边没有向右的蚂蚁,感冒的这只蚂蚁会一直向前走,右边的所有每一只蚂蚁不会感冒
(3)同理该蚂蚁向右
(1)因为只计算数量,所以蚂蚁是掉头还是直接向前走对本题没有影响
(2)如果感冒的蚂蚁方向向左:
在它左边的蚂蚁:如果向右,则会感染;如果向左则不会感染
在它右边的蚂蚁:如果向右,则不会感染
如果向左:(1)如果感冒的那只蚂蚁左边有向右的蚂蚁,他会掉头,则右边向左的蚂蚁会感冒
(2)如果感冒的那只蚂蚁左边没有向右的蚂蚁,感冒的这只蚂蚁会一直向前走,右边的所有每一只蚂蚁不会感冒
(3)同理该蚂蚁向右
总结:找出左边向右,右边向左的蚂蚁数量,若该蚂蚁向右判断右边是否有向左的蚂蚁,如果该蚂蚁向左,判断左边是否有向右的蚂蚁
#include<iostream>
#include<cmath>
using namespace std;
#define MAX 50
int ant[MAX];
int main()
{
int n; cin>>n;
int left=0,right=0;
for (int i=0;i<n;i++){
cin>>ant[i];
}
int h=abs(ant[0]);
for (int i=1;i<n;i++)
{
if (ant[i]>0&&abs(ant[i])<h)
left++;
else if (ant[i]<0&&abs(ant[i])>h)
right++;
}
if ((left==0&&ant[0]>0)||(right==0&&ant[0]<0))
cout<<1<<endl;
else cout<<left+right+1<<endl;
return 0;
}