算法创作|龟兔赛跑问题解决方法

前言

Python中的龟兔赛跑问题解决方法

让你自己输入一个时间,看看最后的赢家是乌龟还是兔子

问题描述

乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?

示例:输入在一行中给出比赛时间T(分钟)。最后得出赢家是谁,并且给出赢家的跑步距离

输入:242

输出:乌龟胜出,并且跑了726米

解决方案

最开始使用第一次想到的思路,也就是分别给兔子和乌龟算奔跑距离,但是后面发现与T的关系出现问题,后来经过网上的参考发现龟兔赛跑是呈现一个周期性的,前十分钟:兔子跑90m,乌龟跑30m,然后兔子休息三十分钟;前四十分钟,兔子90m(休息三十分钟),乌龟跑120m;前五十分钟,兔子跑180m,乌龟跑150m,然后兔子休息三十分钟;前八十分钟,兔子跑180m(休息六十分钟),乌龟跑240m;前九十分钟,兔子跑270m,乌龟跑270m;…可看出九十分钟一个周期,兔子只会在0-10,40-50,80-90这三个时间段跑,而乌龟却一直在跑,则可由此判断谁是胜利者

结语

这次的实验在最开始使用while循环,但是在随着问题的深入,很快就碰壁了,之后受到CSDN大佬的启发,在经过组内讨论和思考后,明白了“龟兔赛跑”问题实质上可以看成乌龟和兔子之间的周期问题,在固定的周期里,兔子的奔跑时间是固定的,与我们之前靠不同时间点来计算路程的问题来说,无疑是减少了不少的算法复杂度,随后便完成了“龟兔赛跑”的编程问题。

实习编辑:衡辉

作者:雷迅、于博、包文晴

(0)

相关推荐

  • 【广东】舒朗悦《乌龟又赢了》指导老师:彭春霞

    乌龟又赢了 [芒果象作文·阅读] 莞城·光大智汇城校区四年级 舒朗悦 大家都知道,第一次赛跑是乌龟赢了,按道理说,乌龟是不会赢的,兔子找到了乌龟说:"还不是我上次睡着了,才让你赢了比赛,要是 ...

  • 笔算开方

    离初中数学的"开平方""开三次方"算法,大概已有35年之久,完全不记得方法了,但是却可以一直尝试用某一个接近的数相乘两次或三次,来看看是否和要开方的那个数值相近 ...

  • 深思益智

    深思益智

  • 算法创作|“石头剪刀布”问题解决方法

    问题描述示例:"石头""剪刀""布"相信是每个人的童年都用过的一种简单快捷解决问题的办法,例如:"今天谁去倒垃圾啊?"& ...

  • 算法创作 | 冒泡排序问题解决方法

    问题描述问题:当需要将一组乱序的数据排序时应该如何解决?示例:此程序每一次输入一组乱序的数据后,会输出一组排好顺序的从小到大(或从大到小)的数据.输入:[64,34,25,12,22,11,90]输出 ...

  • 算法创作|神奇语言问题解决方法

    问题描述一位同学正在学习一门神奇的语言,其中的单词都是由小写英文字母组成,有些单词很长,而这位同学一直记不住,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现的最多来分辨单词,现在请帮助这位同学 ...

  • 算法创作|阶梯电价问题解决方法

    问题描述为了提倡居民节约用电,某省电力公司执行"阶梯电价",安装一户一表的居民用户电价分为两个"阶梯":月用电量50千瓦时(含50千瓦时)以内的,电价为0.53 ...

  • 算法创作 | 0到n-1中缺失的数字问题解决方法

    问题描述一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字.示例1:输入:[0,1,3 ...

  • 算法创作|找出游戏的获胜者问题解决方法

    问题描述共有 n 名小伙伴一起做游戏.小伙伴们围成一圈,按 顺时针顺序 从 1 到 n 编号.确切地说,从第 i 名小伙伴顺时针移动一位会到达第 (i+1) 名小伙伴的位置,其中 1 <= i ...

  • 算法创作 | 二叉树遍历问题解决方法

    问题描述二叉树的先序遍历.中序遍历.后序遍历怎么求?解决方案给你一个二叉树(如图)那么怎么找出它的先序遍历.中序遍历.后序遍历呢?我们先看一个简单二叉树来了解它的概念. 所谓前序,中序,后序就是指根所 ...

  • 算法创作|“画雪人”问题解决方法

    问题描述示例:运用Turtle画出一个戴帽子的雪人在你门前,我堆起一个雪人,代表笨拙的我,把你久等...解决方案掌握turtle库,you can do you want.代码清单 1 DFS求解1到 ...

  • 算法创作|用while实现九九乘法表问题解决方法

    前言问题描述我们刚学习Python的时候,就就看到老师学长用for循环做了一个九九乘法表也就是如下: 输出:1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=12 ...