目录

题目详细:​编辑

题目思路:

两种情况:

代码详解:

题目详细:

题目思路:

这个题目的关键在于对蚂蚁相遇

的时候情况的看待

两个蚂蚁相遇时候的情况

我们可以看作

他们相互穿过了彼此

假设相遇的蚂蚁其中的一只有感冒的话

相遇后就假设他们两个都变成感冒了

所以对于蚂蚁我们就只需要考虑

两种情况:

1.第一只感冒蚂蚁方向朝向的方向没有与他相反朝向的蚂蚁

这种情况,蚂蚁不会和任意一只蚂蚁相会遇见,故最终感冒的蚂蚁数目为1

2.第一只感冒蚂蚁方向朝向的方向有与他相反朝向的蚂蚁

那么这个时候就只需要考虑以第一只感冒蚂蚁为中心

两边朝向这只蚂蚁的数目就是会感冒的蚂蚁数目

具体情况大家可以通过上面提到的方法去模拟一下。

代码详解:

#include

#include

using namespace std;

const int N=106;

int a[N];

int b[N];

int main(){

int n;

cin>>n;

for(int i=1;i<=n;i++){

scanf("%d",&a[i]);

if(a[i]>0) b[i]=1;

else b[i]=-1;

}

int index=abs(a[1]);

int sum=1;

int flag=0;

for(int i=2;i<=n;i++){

if(1==b[1]&&b[i]==-1&&index

if(-1==b[1]&&b[i]==1&&index>a[i]) flag=1;

}

if(1==flag){

for(int i=2;i<=n;i++){

if(abs(a[i])>index&&-1==b[i]) sum++;

if(abs(a[i])

}

}else{

cout<<1;

return 0;

}

cout<

return 0;

}

PS:这种脑筋急转弯的题目还是要多练一下,防止脑袋生锈(doge)

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: