思路
1.性质:相遇掉头等价于继续保持原来的方向不变
2.以第一个蚂蚁向右走为例:
① 感染蚂蚁右边向右走的蚂蚁,永远不会被感染
② 感染蚂蚁左边向左走的蚂蚁,永远不会被感染
③ 感染蚂蚁右边向左走的蚂蚁,一定会被感染
④ 感染蚂蚁左边向右走的蚂蚁:如果感染蚂蚁存在右边向左走的蚂蚁,一定会被感染
如果感染蚂蚁没有右边向左走的蚂蚁,一定不会被感染
代码
/*
1.脑筋急转弯,相遇掉头等价于继续保持原来的方向不变
2.以第一个蚂蚁向右走为例:
① 感染蚂蚁右边向右走的蚂蚁,永远不会被感染
② 感染蚂蚁左边向左走的蚂蚁,永远不会被感染
③ 感染蚂蚁右边向左走的蚂蚁,一定会被感染
④ 感染蚂蚁左边向右走的蚂蚁:如果感染蚂蚁存在右边向左走的蚂蚁,一定会被感染
如果感染蚂蚁没有右边向左走的蚂蚁,一定不会被感染*/
#include<iostream>
#include<cmath>
using namespace std;
const int N = 55;
int ant[N];
int n;
int main()
{
cin >> n;
for(int i = 0 ;i < n;i ++) cin >> ant[i];
int right = 0,left = 0; // 统计左边,右边分别有多少个蚂蚁会被感染
int first = abs(ant[0]); // 第一个感染蚂蚁的坐标
for(int i = 1 ;i < n ;i ++ )
{
//情况③
if(abs(ant[i]) > first && ant[i] < 0)
right ++;
//情况④第二种
if(abs(ant[i]) < first && ant[i] > 0)
left ++;
}
//情况①,②,④第一种
if (ant[0] > 0 && right == 0 || ant[0] < 0 && left == 0) cout << 1 << endl;
else cout << left + right + 1 << endl;
return 0;
}