def selsort(l):
for start in range(len(l)):
pos = start
for i in range(start,len(l)):
if l[i] < l[pos]:
pos = i
l[pos],l[start]=l[start],l[pos]
return(l)
N = int(raw_input())
l = selsort([int(x) for x in(raw_input().split())])
num_of_keys = int(raw_input())
key_size = [int(x) for x in (raw_input().split())]
f_list = [[] for x in range(num_of_keys)]
pos = -1
for i in range(len(key_size)):
for j in range(num_of_keys):
if len(f_list[j]) < key_size[j]:
f_list[j].append(l[pos])
pos = pos -1
steps_required = 0
for i in range(num_of_keys):
for j in range(key_size[i]):
steps_required = steps_required + f_list[i][j]*(j+1)
# print steps_required
上面的代码给出了运行时错误:使用python 2.7的NZEC。怎么解决这个问题。 https://www.hackerearth.com/practice/algorithms/sorting/selection-sort/practice-problems/algorithm/old-keypad-in-a-foreign-land-24/
答案 0 :(得分:-1)
我尝试使用链接网站的示例代码
def selsort(l):
for start in range(len(l)):
pos = start
for i in range(start,len(l)):
if l[i] < l[pos]:
pos = i
l[pos],l[start]=l[start],l[pos]
return(l)
N = 4
l = selsort([7, 3, 4, 1])
num_of_keys = 2
key_size = [1,3]
f_list =[[] for x in range(num_of_keys)]
pos = -1
for i in range(len(key_size)):
for j in range(num_of_keys):
if len(f_list[j]) < key_size[j]:
f_list[j].append(l[pos])
pos = pos -1
print(f_list)
steps_required = 0
for i in range(num_of_keys):
for j in range(key_size[i]):
steps_required = steps_required + f_list[i][j]*(j+1)
我认为密钥的分配是错误的。
for j in range(max(key_size)):
for i in range(num_of_keys):
if(len(f_list[i])>=key_size[i]):
continue
f_list[i].append(l[pos])
pos=pos-1
因此索引错误已解决