def change(item):
if (item == True):
return False
return True
def locker_puzzle(x):
lockers = [False]*x
num_students = 100
num_lockers = 100
for i in range(1, x+1):
for j in range(j, x+1):
if(j % i == 0):
lockers[i-1] = change(lockers[i-1])
count = 1
for item in lockers:
if (item == True):
print(count)
count = count+1
def main():
locker_puzzle(100)
main()
输出应为:
^{pr2}$解决“储物柜之谜”。一所学校有100名学生和100个储物柜。开学第一天所有的储物柜都关闭了。当学生进入时,第一个学生(S1)打开每个储物柜。然后第二个学生(S2)从第二个储物柜(L2)开始,并每隔一个储物柜关闭一次。学生S3从第三个储物柜(L3)开始,每隔三个储物柜更换一次(打开时关闭,关闭时打开)。学生S4从储物柜L4开始,每隔四个储物柜更换一次。学生S5从储物柜L5开始,每隔五个储物柜更换一次,以此类推,直到学生S100更换L100。在
我想你错了
for j in range(j, x+1):
您应该将
j
替换为i
。在更简单的解决方案是:
我就是这样解决的。在
使用更好的名称会使错误更加明显:
输出:
^{pr2}$该输出:
^{pr2}$相关问题 更多 >
编程相关推荐