https://www.acwing.com/problem/content/1213/
很重要要的一点就是蚂蚁碰头掉头走,相当于蚂蚁直接穿过去了。
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
using namespace std;
int a[105];
int main(void)
{
int n; cin>>n;
int left,right;
int ans=0;
left=right=0;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=1;i<n;i++)
{
if(abs(a[i])<abs(a[0])&&a[i]>0) left++;//左边的蚂蚁向右走的个数
if(abs(a[i])>abs(a[0])&&a[i]<0) right++;//右边蚂蚁向左走的个数
}
if(a[0]>0)//向右走
{
if(left>0&&right>0)
{
ans=1+right+left;
}
else
{
ans=1+right;
}
}
if(a[0]<0)//向左走
{
if(right>0&&left>0)
{
ans=1+right+left;
}
else
{
ans=1+left;
}
}
cout<<ans;
return 0;
}
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
using namespace std;
int a[105];
int main(void)
{
int n; cin>>n;
int left,right;
left=right=0;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=1;i<n;i++)
{
if(abs(a[i])<abs(a[0])&&a[i]>0) left++;
if(abs(a[i])>abs(a[0])&&a[i]<0) right++;
}
if( a[0]>0&&right==0 ||a[0]<0&&left==0) cout<<1<<endl;
else cout<<1+right+left<<endl;
return 0;
}