中心思想
蚂蚁相遇各自调头==蚂蚁相遇当作没有相遇继续前进
代码
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int arr[10001][2];
int ans=1;//初始值为1
int main()
{
int n;
int flag;
cin>>n;
for(int i=0; i<n; i++)//存储每只蚂蚁的位置和初始状态
{
cin>>arr[i][0];
if(i == 0)
arr[i][1] = 1;
else
arr[i][1] = 0;
}
if(arr[0][0] > 0)//如果感冒蚂蚁方向为正
{
for(int j = 1; j<n; j++)
{//遍历找到在感冒蚂蚁的右边且方向为负的蚂蚁
if(arr[j][0]<0 && abs(arr[j][0])>arr[0][0])
{
flag = 1;//存在以上条件,则方向为正且在感冒蚂蚁左边的码蚁也会被感染
ans++;
}
}
if(flag)//左且正蚂蚁被感染
{
for(int j=1; j<n; j++)
{
if(arr[j][0]>0 && arr[j][0]<arr[0][0])
ans++;
}
}
}
else//思路一样,方向相反
{
for(int j = 1; j<n; j++)
{
if(arr[j][0]>0 && arr[j][0]<abs(arr[0][0]))
{
flag = 1;
ans++;
}
}
if(flag)
{
for(int j=1; j<n; j++)
{
if(arr[j][0]<0 && arr[j][0]<arr[0][0])
ans++;
}
}
}
cout<<ans;
}