首页 » 网站建设 » 蚂蚁伤风php技巧_来寻衅蚂蚁感冒的算法问题给你10分钟还有Python编程解法

蚂蚁伤风php技巧_来寻衅蚂蚁感冒的算法问题给你10分钟还有Python编程解法

访客 2024-12-04 0

扫一扫用手机浏览

文章目录 [+]

蚂蚁大军

李公子现在很困惑,沉思许久,他始终想不明白这个问题,于是通过光阴穿梭手机打电话给你,让你通过编程技能来解答这个问题。

蚂蚁伤风php技巧_来寻衅蚂蚁感冒的算法问题给你10分钟还有Python编程解法

我想此刻你的大脑一定飞速运转起来了,你可以先独立思考,且可以用任意编程措辞编码验证。
如若没有思路,没紧要,请随着我来一起剖析。

蚂蚁伤风php技巧_来寻衅蚂蚁感冒的算法问题给你10分钟还有Python编程解法
(图片来自网络侵删)
问题梳理

长100厘米的独木桥上有n只蚂蚁。
他们的头有的朝左,有的朝右。
每只蚂蚁都只能沿着独木桥往前爬,速率是1cm/秒。

当两只蚂蚁碰面时,它们会同时掉头朝着相反的反向爬行。
在这些蚂蚁中,有1只蚂蚁感冒了,并且在和其它蚂蚁碰面时,会把感冒传染给所碰到的蚂蚁。

请你打算,当所有蚂蚁都爬离独木桥时,有多少只蚂蚁会患上感冒呢?

输入:

① 输入一个整数n(1<n<50),表示蚂蚁的数量。
② 输入n个用空格分开的整数Xi(-100<Xi<100),Xi的绝对值表示蚂蚁离开杆子左边端点的间隔,正值表示头朝右,负值表示头朝左,数据中不会涌现0值,也不会涌现两只蚂蚁占用同一位置的情形。
个中,第一个数字代表的蚂蚁感冒了。

输出:

哀求输出1个整数,表示末了感冒的蚂蚁数量。

样例1:

样例输入:n = 3Xi = "5 -2 8"样例输出:1

样例输入:n = 5Xi = "-10 8 -20 12 25"样例输出:3

问题等你来解答

思路剖析

我们以样例中的第2组数据来剖析。
按照数据,总蚂蚁数为5,蚂蚁的位置分别是-10、8、-20、12、25,根据题意第一个数字代表感冒的蚂蚁,即-10,为了便于梳理思路,我们可绘图如下:

思路剖析

由于每只蚂蚁的走路速率相同,且感冒蚂蚁在-10的位置,我们可以从图中看出位置25处蚂蚁的方向向右,以是位置25是绝对不会被传染感冒的。
同理,如果位置8左边还有蚂蚁-5,则同样不会被传染。
如下图所示(打红叉的为不会被传染感冒的蚂蚁)。

思路剖析

第一只感冒蚂蚁的运动方向有两种情形,即向左走和向右走。

① 第一只感冒蚂蚁向左走:

这种情形就须要先判断它的左边是否有向右走的蚂蚁,否则就会相遇且被传染感冒。

如果它左边没有向右走的蚂蚁,则自始至终就只有它一个感冒,不会传染给别的蚂蚁。

如果它左边有向右走的蚂蚁,那么我们再判断它右边的蚂蚁是否有向左走的,有的话也会被传染感冒。

② 第一只感冒蚂蚁向右走:

这种情形就须要先判断它右边是否有向左走的蚂蚁,否则就会相遇且被传染感冒。

如果它右边没有向左走的蚂蚁,则自始至终就只有它一个感冒的,不会传染给别的蚂蚁。

如果它右边有向左走的蚂蚁,那么我们再判断它左边的蚂蚁是否有向右走的,有的话也会被传染感冒。

剖析到这里,我想机警的你肯定迫不及待的想打开电脑编程试一试,如果还没有编程思路也没紧要,请随着我一起来看看如何利用Python编程措辞来实现吧!

程序编写

1、用户输入,并进行有效性校验:

输入与校验

2、将用户输入的蚂蚁位置转换为列表格式:

位置数据处理

3、记录蚂蚁位置的绝对值列表,且利用字典记录原始值和绝对值之间的对应关系:

记录对应关系

4、打算第一只感冒蚂蚁旁边两边的蚂蚁数:

蚂蚁数记录

5、分别定义感冒蚂蚁左边向右的蚂蚁数和右边向左的蚂蚁数:

记录蚂蚁数

6、打算第一只感冒蚂蚁左边向右走的蚂蚁数:

记录蚂蚁数

7、打算第一只感冒蚂蚁右边向左走的蚂蚁数:

记录蚂蚁数

8、如果第一只感冒蚂蚁左边向右走的蚂蚁数为0,或者右边向左走的蚂蚁数为0,则自始至终都没有传染给任何一个蚂蚁,以是终极感冒的蚂蚁数为1:

逻辑判断

9、打算末了感冒的蚂蚁数 = 第一只感冒蚂蚁左边向右走的蚂蚁数 + 第一只感冒蚂蚁右边向左走的蚂蚁数 + 本来就感冒的蚂蚁数(即1):

打算结果

完全代码

下面列出完全的编程代码,方便你一气呵成的阅读和思考。

完全代码

末了让我们一起来试试程序的运行效果吧:

请输入蚂蚁总数n:7请输入所有蚂蚁的位置,用空格隔开:-10 8 12 -30 -3 -45 34末了感冒蚂蚁数为:4

本日的算法问题分享就到这里,本篇文章较之前稍繁芜一些,不过学习算法便是这样,只要经由你的负责思考和推进,一定会得到最优解的,加油!

标签:

相关文章

微信第三方登录便捷与安全的完美融合

社交平台已成为人们日常生活中不可或缺的一部分。微信作为我国最受欢迎的社交软件之一,拥有庞大的用户群体。为了方便用户在不同平台间切换...

网站建设 2025-02-18 阅读0 评论0

广东高速代码表解码高速公路管理智慧

高速公路作为国家交通动脉,连接着城市与城市,承载着巨大的物流和人流。广东作为我国经济大省,高速公路网络密布,交通流量巨大。为了更好...

网站建设 2025-02-18 阅读0 评论0