题目描述

长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。

每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。

当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。

这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。

请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。

输入

第一行输入一个整数n  (1  <   n  <   50),  表示蚂蚁的总数。

接着的一行是n个用空格分开的整数  Xi  (-100  <   Xi  <   100),  Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数  据代表的蚂蚁感冒了。

输出

要求输出1个整数,表示最后感冒蚂蚁的数目。

样例输入

5

-10 8 -20 12 25

样例输出

3

分析:

刚开始的时候完全就是模拟的思想在写这道题,差不多一百行的代码写下啦,不用说肯定超了。然后就觉得自己的思路有问题,就换一种方法写。

首先我们考虑这个问题一共有几种可能出现的情况

1.第一个蚂蚁向左走,但是他的左边没有向右走的蚂蚁,(但是他的左边可以有向左走的蚂蚁,只是肯定不会与他相遇,所以就不用考虑),他的右边的蚂蚁无论向左还是向右走都不会与他相遇,所以感冒的只有他本身

2.第一个蚂蚁向右走,但是他的右边没有向左走的蚂蚁,(但是他的右边可以有向右走的蚂蚁,只是肯定不会与他相遇,所以就不用考虑),他的左边的蚂蚁无论向左还是向右走都不会与他相遇,所以感冒的只有他本身

3.第一个蚂蚁不论向左走还是向右走,只要他第一次遇见一个蚂蚁之后,这两个蚂蚁就同时都感冒了并且向相反的方将进行,也就可以看作有两个第一个蚂蚁分别向两个方向走,那么此时他左边的向右走的,和他的右边的向左走的所有的蚂蚁都会患上感冒,统计其个数即可。

代码:

    #include <iostream>#include<string.h>#include<cstdio>#include<stdlib.h>#include<math.h>using namespace std;int main(){int n;int a[100];scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",&a[i]);int left=0,right=0,count;for(int i=1;i<n;i++){if(a[i]<0&&abs(a[i])>abs(a[0]))//在第一个蚂蚁的右边,并且向左走的所有的  蚂蚁 right++;                         //第一个蚂蚁右边与他相遇的蚂蚁个数 if(a[i]>0&&abs(a[i])<abs(a[0]))//在第一个蚂蚁的的左边,并且向右走的所有的蚂蚁 left++;                           //第一个蚂蚁左边与他相遇的蚂蚁个数 }      if(a[0]>0&&right==0||a[0]<0&&left==0)//第一个蚂蚁向右走,并且他的右边没有与之相遇的蚂蚁;或者第一个蚂蚁向左走,并且左边没有与之相遇的蚂蚁 count=1;                               //会感冒的就只有他一个 elsecount=left+right+1;printf("%d",count);return 0;}

转载于:https://www.cnblogs.com/cmmdc/p/6729687.html

蓝桥杯 1454 蚂蚁感冒 (找规律)相关推荐

  1. [蓝桥杯2018初赛]分数-找规律

    题目描述 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + - 每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来. 类似:3/2当然,这只是加了前2项而已.分子分母 ...

  2. [蓝桥杯2019初赛]旋转-找规律

    代码如下: #include <iostream> using namespace std; const int N = 110; int a[N][N];int main() {int ...

  3. 【c语言】蓝桥杯算法训练 4-2找公倍数

    问题描述 打印出1-1000所有11和17的公倍数. 样例输入 一个满足题目要求的输入范例. 样例输出 与上面的样例输入对应的输出. 例: #include <stdio.h> int m ...

  4. [观察,找规律]算法题目训练

    [蓝桥杯2019初赛]旋转-找规律 蓝桥杯2017初赛-打印大X-找规律 [蓝桥杯2018初赛]分数-找规律 [蓝桥杯2019初赛]矩形切割-找规律 [蓝桥杯2018初赛]方格计数-巧妙枚举,找规,数 ...

  5. 有意思的逻辑思维题(三)(hdu2211,蓝桥杯蚂蚁感冒)

    杀人游戏 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2211 题目描述: 现在已知有N个土匪站在一排,每个土匪都有一个编号,从1到N,每次杀人时给 ...

  6. [蓝桥杯] 蚂蚁感冒

    [蓝桥杯] 蚂蚁感冒 峰值内存消耗 < 256M CPU消耗  < 1000ms [题目描述 - Problem Description] 长100厘米的细长直杆子上有n只蚂蚁.它们的头有 ...

  7. 蓝桥杯.蚂蚁感冒(模拟)

    Question: Solve: 当想不到办法的时候,暴力模拟就是最好的办法~ 既然是要走杆,那就一步一步走,一步一步的判断,等蚂蚁全部出界之后再统计一下有多少感染就行,这个思路非常平易近人 接下来明 ...

  8. [第五届蓝桥杯省赛C++A/B组]蚂蚁感冒

    来源: 第五届蓝桥杯省赛C++A/B组 算法标签:数学 题目描述 长 100 厘米的细长直杆子上有 n 只蚂蚁. 它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒. 当 ...

  9. 【完美解析】蓝桥杯 省赛 杨辉三角形 python组 找规律+二分查找+组合数

    题目 看到最后如果还不懂你来打我~ 分析 我们看到杨辉三角形很容易想到一个数的值等于它肩膀两个数的和.为此,可以不断通过前一行的数求出后一行的数,重复上面操作,直到找到目标为止.但是看了用例规模后发现 ...

最新文章

  1. C语言标准库之strcat函数
  2. Chapter2 消息总线 ConfigClient配置自动刷新
  3. 极光 php 自定义消息,laravel框架使用极光推送消息操作示例
  4. nginx、apach、php、mysql编译参数
  5. Linux如何修改用户名?
  6. purple-class2-默认选项切换
  7. 介绍几款Web TimeSheet相关的软件
  8. java 8 中文API
  9. java程序源代码如何保存到桌面_如何编写JAVA小白第一个程序
  10. this和arguments
  11. R 升级到 4 之后的悲剧
  12. 智能机器人热点技术大揭秘!
  13. linux网卡流量定时记录脚本crontab与手动执行结果不一致问题处理
  14. Matlab显示图像并显示框选的有效区域
  15. kali系统卸载Docker容器
  16. java端口扫描器 demo_java端口扫描器
  17. 【畅捷通T+】登录提示 列“MarketingCloudUserId”不属于表 。
  18. yui2 datatable转换至yui3
  19. 带动画效果的下拉菜单
  20. “读芯术”精华文章汇总:前程规划

热门文章

  1. python中str和input_对python中raw_input()和input()的用法详解
  2. 360导航源码php,114啦网址导航源码仿360网址导航最新版
  3. 如何让企业引起对网站运营优化的重视程度呢?
  4. 计算机网络数据容量100M,华工网络教育计算机网络作业及答案
  5. ironbot智能编程机器人_视频 | 多模式编程机器人,“程序猿”培养从小抓起
  6. vim复制内容到系统剪贴板
  7. Finding Similar Items 文本相似度计算的算法——机器学习、词向量空间cosine、NLTK、diff、Levenshtein距离...
  8. 【AI】Win10-Tensorflow
  9. 第一期站立会议2(11.16个人)
  10. Fastadmin 写关联命名时,最好前后台用同一个model,方便管理(会出现命名空间问题)...