蚂蚁

一个靠巧妙得出答案的题目:

历届试题 蚂蚁感冒
问题描述
  长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。

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

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

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

  请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。
输入格式
  第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。

  接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数据代表的蚂蚁感冒了。
输出格式
  要求输出1个整数,表示最后感冒蚂蚁的数目。
样例输入
3
5 -2 8
样例输出
1
样例输入
5
-10 8 -20 12 25
样例输出
3

刚接触题目时有点没有思路,因为会想的太多,在思考每一个蚂蚁的行动状态甚至每个时候的蚂蚁状态是一件劳而无功的事情,以至于走了弯路。知道查看了题解,才意识到了解题的要路。
要清楚的几点是:
1,每个蚂蚁的速度是相同的,一个蚂蚁如果和感冒蚂蚁在同一方向上前进,除了蚂蚁回头,是不会相遇的。
2,蚂蚁的转头可以看做是两个蚂蚁一个向左一个向右,碰见后反转,一个向右一个向左,而题目所求的是感冒的蚂蚁数目,所以感染的蚂蚁个体对结果并不会产生影响。
3,在感冒的蚂蚁传染给正常蚂蚁并反转后,正常蚂蚁代替原蚂蚁继续向原来的方向传染,在相反的方向,也开始传染感冒。

总结:
如果原来的蚂蚁行动方向是向左,
那么该蚂蚁左方的向右行动的蚂蚁会被传染。
该蚂蚁右方的向左行动的蚂蚁:
如果原来的蚂蚁向后反转,那么将会被传染。(这时左方有向右行动的蚂蚁已经被传染)
如果左方没有向右行动的蚂蚁,那么该蚂蚁不会反转,不会被传染。
其余方向行走的蚂蚁则不会被传染。
如果原始方向是向右,同理推断。

解题代码为:

#include<iostream>
#include<cmath>  
using namespace std; 

#define MAX 50

int ant[MAX]; 

int main()
{
    int i;
    int n; cin>>n; 
    int left=0,right=0;  
    for (i=0;i<n;i++){ 
        cin>>ant[i];  
    } 
    int h=abs(ant[0]); 
    for ( i=1;i<n;i++) 
    { 
        if (ant[i]>0&&abs(ant[i])<h)//方向向右,即向右行走&&距离左端小于原蚂蚁,即在其左侧
            left++; 
        else if (ant[i]<0&&abs(ant[i])>h) //方向向左,即向左行走&&距离左端大于原蚂蚁,即在其右侧
            right++; 
    } 

    if ((left==0&&ant[0]>0)||(right==0&&ant[0]<0))   //向左行走时左侧没有向右行走的||向右行走时右侧没有向左行走的
        cout<<1<<endl; 
    else cout<<left+right+1<<endl;  //有传染过别的蚂蚁,存在反转,反方向蚂蚁会被传染。

    return 0; 
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 太空看树不是梦。 距离地球770公里的太阳同步轨道上的WorldView-2卫星,和距离地球631公里的太阳同步回...
    红拂夜奔去阅读 2,399评论 1 8
  • 一 读这套书还有一个漫长而又莫名其妙的过去。在初中的时候,我就已经开始读这套书最初的版本。但是不知道为什么,竟然已...
    丁若柯阅读 20,324评论 6 11
  • 这么多年,我的生命中似乎只有学习。初中高中我是学痴吧,天天除了学习学习也不知道做什么。结果是很抑郁的。高中不开心,...
    苏醒7阅读 107评论 2 2
  • 已是卯时时分,夕阳欲坠未坠,将西山染得一片血红。 青石板铺就的古街狭窄,斜长。江南商道繁盛,临江街道两旁是密密匝匝...
    王动02阅读 193评论 0 0
  • 穿着蓝色的工作服走出涂上孤独的门。一个白发司机载着风尘仆仆的长途哈欠来到这里,在方向中断禁止停留的早晨,他打...
    文森林木阅读 179评论 0 1