我是高中生,学的python,求各位帮助解决,您们的每次解决都是对我们学业的帮助,万分感谢。三个空格应该填什么代码?求解释一下,谢谢。
代码没问题,但确实效率不高。嵌套循环本不需要的,但既然题目这么写了,那就只能这样补全代码:
hole = []
n = 10
m = 1000
for i in range(n-1):
hole.append([0,i+1])
hole.append([0,n]) # 将最后一个洞添加进列表
head = 0
k = head
hole[0][0]=1
for i in range(1,m):
for j in range(1,i+2):
k = (k+1)%n # 从上次查询的洞开始,依次跳过一个洞,跳过的次数等于当次查询的次数
hole[k][0]=1
for i in range(len(hole)):
if hole[i][0] == 0:
print("兔子可能躲在第" + str(hole[i][1]) + "号洞") # 将结果转成字符串输出
这题目给出的代码是不是有问题啊,hole列表的长度不是应该是10吗?试了一下写成下面这样是可以得到2、4、7、9,但和给出的代码不完全对不上。
hole = []
n = 10 # 洞的数量
m = 1000 # 寻找次数
# 构造一个循环链表,并给n个洞编号,设置洞的初始标志为0
# 链表的节点样式为:[洞的标志,洞的编号]
for i in range(n):
hole.append([0, i + 1])
# print(hole)
# [[0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10]]
# 狐狸开始找兔子,将进入过的洞标志改为1,寻找m次结束
head = 0
k = head
hole[0][0] = 1 # 第一次寻找,1号洞,设置标志为1
for i in range(1, m): # 第i+1次寻找
"""
第2次寻找:i-->1 洞的索引-->2-->3号洞
第3次寻找:i-->2 洞的索引-->5-->6号洞
第4次寻找:i-->3 洞的索引-->9-->10号洞
第5次寻找:i-->4 洞的索引-->4-->5号洞
第6次寻找:i-->5 洞的索引-->0-->1号洞
第7次寻找:i-->6 洞的索引-->7-->8号洞
第8次寻找:i-->7 洞的索引-->5-->6号洞
第9次寻找:i-->8 洞的索引-->4-->5号洞
第10次寻找:i-->9 洞的索引-->4-->5号洞
"""
for j in range(1, i + 2):
if j == i+1:
k += (j % m) % n
k %= n
# 将进入的索引为k的洞的标志设置为1
hole[k][0] = 1
# print(k)
# print(hole)
# 输出标志仍为0的洞,即兔子可能藏身地点
for i in range(len(hole)):
if hole[i][0] == 0:
print("兔子可能躲在第" + str(hole[i][1]) + "号洞")