坏零兔


私信TA

用户名:18434761984

访问量:2567

签 名:

等  级
排  名 14761
经  验 867
参赛次数 0
文章发表 5
年  龄 0
在职情况 学生
学  校 山西农业大学
专  业

  自我简介:

解题思路:蚂蚁相遇看做继续前进,经验总结简化判断分支

注意事项:
其实如果当单个蚂蚁时计算结果是不感冒,但是是一群蚂蚁的时候,这只原本不感冒的蚂蚁会因为自己转向或者感冒蚂蚁转向而感冒,所以我们将这些情况总结起来形成判断条件,我们只需要在输入每一只蚂蚁的时候都判断这个是否符合这个条件即可,这样无需更多的判断分支,简洁就是力量!
参考代码:

#include<stdio.h>

int a(int s)//定义函数取绝对值算距离杆最左边的距离

{

if(s<0) 

return -s;

else

return s;

}

int main()

{

int ganant=1,shouant,n,i,j;//全是拼音,首ant,感ant

scanf("%d",&n);//输入蚂蚁个数

scanf("%d",&shouant);//首只感冒蚂蚁

for(j=1;j<n;j++)//一个一个计算感冒不感冒

 {

scanf("%d",&i);

if(a(shouant)>a(i)&&i>0||a(shouant)<a(i)&&i<0)//这一步要特别说明,它是来自经验所得,在多次失败之后我发现,比如,首蚂蚁在中间,那么

          //它左边所有向右的和右边所有向左的,最后都会感冒!因为虽然一只一只比较的时候可能没感冒,但是一群蚂蚁的时候,它会被翻转方向的蚂蚁感染或者自己翻转方向被感染。

ganant++;        //所以在这里一只一只进行比较的时候,直接看做会感冒


}

printf("%d",ganant);

return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »