您的位置:首页 > 其它

蚂蚁感冒

2017-03-25 20:03 183 查看
思路:本想着模拟一下,但是中间发现一个问题,等两只蚂蚁到了比如说9 -10的时候,到底该怎么走了呢。。

然后就只25分。。

错误数据:

5

20 4 -3 -10 -22

应输出3(不理解啊,模拟出来怎么感觉是4。。)

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int x[55];
int vis[55];
int main()
{
int n;
while(cin >> n)
{
for(int i=0; i<n; i++)
cin >> x[i];
int cnt = n, sum = 1;
memset(vis, 0,sizeof vis);
vis[0] = 1;
while(cnt)
{
for(int i=0; i<n; i++)
{
if(x[i] == 1000) continue;
x[i]++;
if(x[i] > 100 && x[i] != 1000)
{
x[i] = 1000;
cnt--;
}
}
for(int i=0; i<n; i++)
{
if(x[i] == 1000)
continue;
for(int j=0; j<n; j++)
{
if(vis[i] == 2 && vis[j] == 2)
continue;
if(i == j)
continue;
if(x[i] == -x[j])
{
x[i] = -x[i];
x[j] = -x[j];
if(vis[i] == 1 && vis[j] == 1)
continue;
if(vis[i] == 1 || vis[j] == 1)
{
sum++;
vis[i] = 2;
vis[j] = 2;
}
}

}
}
for(int i=0; i<n; i++)
{
if(vis[i] == 2) vis[i] = 1;
}
}
cout << sum << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: