100个python算法超详细讲解:狼追兔子
【100个python算法超详细讲解】@谷哥技术
1.问题描述
一只兔子躲进了10个环形分布的洞中的某一个。狼在第一个洞中
没有找到兔子,就隔一个洞,到第三个洞中去找;如果没有找到,就
隔两个洞,到第六个洞中去找;以后每次多隔一个洞去找兔子……这
样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?
2.数组
在Python语言中,其数据类型列表就是数组。它是以方括号“[]”包
围的数据类型,各个数据之间使用逗号“,”隔开。其内部元素可以是
Python语言中的任何数据类型,也可以是另一个列表。我们可以通过
各个元素的序号(下标)来访问列表中的元素,也可以对列表进行排
序、添加、删除、相加、乘法及分片等操作。
关于列表的相关方法我们在第2章中就介绍过了,这里不再重复。
3.问题分析
首先定义一个数组a[11],其数组元素为a[1],a[2],a[3]…a[10],
这10个数组元素分别表示10个洞,初值均置为1。
接着使用“穷举法”来找兔子,通过循环结构进行穷举,设最大寻
找次数为1000次。由于洞只有10个,因此第n次查找对应第n%10个
洞,如果在第n%10个洞中没有找到兔子,则将数组元素a[n%10]置0。
当循环结束后,再检查a数组各元素(各个洞)的值,若其值仍为
1,则兔子可能藏身于该洞中。
4.算法设计
程序的流程图如图8.9所示。
5.完整的程序
根据上面的分析,编写程序如下:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author : liuhefei
# @desc: 狼追兔子
if __name__=="__main__":
n = 0
x = 0
a = [1]*11 # 定义一个长度为11的数组,初始值均为1
for i in range(0, 1000): # 穷举搜索
n += (i+1)
x = n % 10
a[x] = 0 # 没有找到,设置为0
for i in range(0, 10): # 输出结果
if a[i]:
print("可能在第%d个洞中" %i)
6.运行结果
在PyCharm下运行程序,结果如图8.10所示。
100个python算法超详细讲解:狼追兔子相关推荐
- 100个python算法超详细讲解:搬山游戏
[100个python算法超详细讲解]@谷歌学术 1.问题描述 设有n座山,计算机与人作为比赛的双方,轮流搬山.规定每次搬 山数不能超过k座,谁搬最后一座谁输.游戏开始时,计算机请人输入 山的总数n和 ...
- 100个python算法超详细讲解:平分7筐鱼
[100个python算法超详细讲解]@谷哥技术 1.问题描述 2.乙.丙三位渔夫出海打鱼,他们随船带了21只箩筐.当晚返航时, 他们发现有7筐装满了鱼,还有7筐装了半筐鱼,另外7筐是空的,由于他们 ...
- 100个python算法超详细讲解:邮票组合
[100个python算法超详细讲解]@谷哥技术 1.问题描述 我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小 面值邮票中的一张或几张的组合,可以满足不同邮件的不同邮资.现 在,邮局有4种不 ...
- 100个python算法超详细讲解:递归解决年龄问题
[100个python算法超详细讲解]@谷哥技术 1.问题描述 有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁.问 第4个人多少岁,他说比第3个人大2岁.问第3人多少岁,他说比第2个 人大2 ...
- 100个python算法超详细讲解:谁是窃贼
[100个python算法超详细讲解]@谷哥技术 1.问题描述 警察审问4名窃贼嫌疑犯.现在已知,这4人当中仅有一名是窃 贼,还知道这4个人中的每个人要么是诚实的,要么总是说谎. 下面是这4个人给警察 ...
- 100个python算法超详细讲解:抢30游戏
[100个python算法超详细讲解]@谷歌学术 1.问题描述 由两个人玩"抢30"游戏,游戏规则是:第一个人先说"1"或"1,2",第 二 ...
- 100个python算法超详细讲解:卡布列克常数
[100个python算法超详细讲解]@谷哥技术 1.问题描述 对于任意一个4位数n,进行如下的运算: 1)将组成该4位数的4个数字由大到小排列,形成由这4个数字构 成的最大的4位数. 2)将组成该4 ...
- 100个python算法超详细讲解:孪生素数
[100个python算法超详细讲解@谷哥技术] 1.问题描述 本节要研究孪生素数的问题,先来看看什么是孪生素数. 所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离已经 近得不能再近了,如 ...
- 100个python算法超详细讲解:猴子吃桃
[100个python算法超详细讲解]@谷哥技术 1.问题描述 一个猴子摘了一些桃子,它第一天吃掉了其中的一半然后再多吃了 一个,第二天照此方法又吃掉了剩下桃子的一半加一个,以后每天如 此,直到第十天 ...
最新文章
- 当前元素_90行代码,15个元素实现无限滚动
- php导出mongo日志,导出mongo库到本地
- times(NULL) Segmentation fault
- 申明 csdn的博客wjszf 也是本人的
- “苏木”边上的小牛犊
- mysql删除记录后id不连续_Mysql数据库中使用DELETE语句时,一般删除一条记录后ID会不连续,才能让序号继续按顺序排列?...
- mongo 主从数据不同步
- Ubuntu16.04 安装Caffe教程
- KVM虚拟化技术原理简介
- 怎样清理计算机c盘东西,电脑c盘满了怎么清理
- 整车控制器(VCU)策略及开发流程
- 用word宏命令批量修改图片尺寸大小(亲测好用!)
- html实现爱情告白(附源码)
- 心电电路算法滤波_心电仪滤波
- appStore上传苹果应用程序软件发布流程
- 微信开发者工具中使用vant库
- MySql 配置 方法
- Vue 2.爷爷点击事件触发孙子的方法
- 屏蔽宽带运营商的弹窗广告
- 甘肃省甘南藏族自治州谷歌卫星地图下载