[英]Assigning a variable to the value of a single element of an array/matrix in Trinket
[英]Assigning value to element in array changes other variable
我一直在為計算競賽而學習,而在處理一個看似微不足道的問題時,我遇到了一些意外的行為。 我相信答案很簡單,但是對於我的一生,我無法弄清楚。
問題是: https : //dmoj.ca/problem/ccc14s1
這是我的程序:
import math
K = int(input())
m = int(input())
r_i = []
for i in range(m):
r_i.append(int(input()))
friends = [x+1 for x in range(K)]
print(r_i)
for j in r_i:
instances = int(math.floor(friends[-1] / j))
for k in range(instances):
friends[j*(k+1) - 1] = -1
for n in friends:
if(n != -1):
print(n)
問題在於,經過for j in r_i
的循環一次后, instances
計算結果為-1。 我發現刪除line friends[j*(k+1) - 1] = -1
將解決問題,但我看不到為什么將值-1分配給friends
的元素會影響instances
的值在下一次迭代中。
從您提供的鏈接中獲取樣本輸入:
10
2
2
3
在第一個循環中:
for j in r_i:
instances = int(math.floor(friends[-1] / j))
for k in range(instances):
friends[j*(k+1) - 1] = -1
您正在將friends
設置為
[1, -1, 3, -1, 5, -1, 7, -1, 9, -1]
^^
因此,在下一個循環中,當您嘗試結識friends[-1]
,您會得到上面指出的價值。 毫無疑問,它是-1
。
設置一次后,您應該清除所有-1
秒:
for j in r_i:
instances = int(math.floor(friends[-1] / j))
for k in range(instances):
friends[j*(k+1) - 1] = -1
friends = [i for i in friends if i != -1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.