曲金涛


私信TA

用户名:2019021891

访问量:485

签 名:

等  级
排  名 5343
经  验 1497
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 贵州大学
专  业 计算机

  自我简介:

解题思路:

第一只蚂蚁不管方向朝哪它右边的蚂蚁只要向左走就可能碰撞感染(特殊情况除外),同样,第一只蚂蚁左边的蚂蚁只要朝右边走也可能被感染,这样就很容易得到这样的公式


ans = 左边蚂蚁向右走的数量+右边蚂蚁向左走的数量+第一只蚂蚁本身=right+left+1;


特殊情况是,当当第一只蚂蚁向左走的时候如果第一只蚂蚁左边没有向右爬行的蚂蚁,那么不管第一只蚂蚁右边有多少向左爬行的,因爬行的速度相同则右边的蚂蚁永远不可能被感染


同样的,当第一只蚂蚁向右走的时候,如果第一只蚂蚁右边没有向左爬行的蚂蚁,那么同样第一只蚂蚁左边也永远不可能感染


注意事项:

参考代码:



#include <iostream>

using std::endl;

using std::cout;

using std::cin;

int abs(int x)

{

if(x<0)

return -x;

return x;

}

int main()

{

int N;

int data[50];

while(cin >> N)

{

//感冒蚂蚁的数量

int left=0,right=0;

//输入数据

for(int i=0; i<N; ++i)

{

cin >> data[i];

}

for(int i=1; i<N;++i)

{

//找到该蚂蚁右边且向左走的

if(data[i]<0&&abs(data[i])>abs(data[0]))

{

left++;

}

//找到该蚂蚁左边且向右走的

if(data[i]>0&&abs(data[i])<abs(data[0]))

{

right++;

}

}

//判断是否为特殊情况

if((data[0]<0&&right==0)||(data[0]>0&&left==0))

{//见上面解析

cout << "1" <<endl;

}else

{

cout << left+right+1 << endl;

}

}

return 0;

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区