题解分享
题解分享简介
蚂蚁感冒(编程题) - 题解
```
#include<iostream>
```
include
include
using namespace std;
int n;
int sum=1;
const int N=50;
int a[N];
int main(){
int point=-1;
cin>>n;
for(int i=0;i
>a[i];
if(i==0){
point=a[i];
}
}
//如果有病蚂蚁向右爬
if(point>0){
//把在蚂蚁前面的且往左走的全部算上
int k=0;
for(int i=1;i
point) k++;
}
sum+=k;
//如果说前面有传染,那么蚂蚁后边的向右边走的也会被感染
if(k!=0){
```
for(int i=1;i<n;i++){
if(a[i]>0&&a[i]<point) sum++;
}
}
}
else if(point<0){
//感冒蚂蚁向左边走
int k=0;
//统计在蚂蚁左边且向右边走的蚂蚁
for(int i=1;i<n;i++){
if(a[i]>0&&a[i]<abs(point)){
k++;
}
}
sum+=k;
if(k!=0){
for(int i=1;i<n;i++){
if(a[i]<0&&a[i]<point){
sum++;
}
}
}
}
```
cout<<sum<<endl;
}
查看全文
0
0
0
1
蚂蚁感冒(编程题) - 题解
```
#include <bits/stdc++.h>
typedef long long LL;
using namespace std;
int n;
int a[60];
int main()
{
cin>>n;
int left=0,right=0;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
{
if(abs(a[i])<abs(a[1]) && a[i]>0) left++;
if(abs(a[i])>abs(a[1]) && a[i]<0) right++;
}
if((a[1]>0 && right==0) || (a[1]<0 && left==0))
cout<<1<<endl;
else
cout<<left+right+1<<endl;
return 0;
}
```
查看全文
0
0
0
2
蚂蚁感冒(编程题) - 题解
简单模拟
```cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
int w,m,n;
cin>>w>>m>>n;
if(m>n)swap(m,n);
int x=m;
int a=(m-1)/w,b=(n-1)/w;
int d=0,step=0;
for(int r=a+1;r<=b;r++){
if((r-1)&1==0 && r&1)d=2*w-(x%w)-1;
else d=(w-x%w)*2+1;
step++;
// cout<<"d:"<<d<<endl;
// cout<<"step:"<<step<<endl;
x+=d;
// cout<<"x:"<<x<<endl;
}
step+=abs(x-n);
cout<<step<<endl;
return 0;
}
```
查看全文
0
0
0
1



